Skip to main content
Glama

Server Details

A molecular biology bench for AI assistants: cloning and assembly, PCR and primer design, CRISPR, Sanger verification, qPCR and dPCR, alignment and phylogenetics, genomics, proteins and cheminformatics. Calculated by engines checked against the field's reference tools, with every result explained. No auth, stateless, free.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.3/5.0

Scored across 315 tools

Disambiguation2/5

The set contains many clusters of tools with overlapping purposes: design_primers vs design_primer_pairs vs design_sequencing_primers vs design_degenerate_primers, multiple qPCR Cq/curve tools, several alignment and tree comparators, and many copy-number analysis tools. Descriptions often explain subtle distinctions, but at 315 tools an agent must parse long prose to avoid misselection, and several pairs still sound interchangeable without careful reading.

Naming Consistency3/5

Most names use snake_case and many follow verb_noun patterns, but there is substantial mixing between verb-led names (design_primer_pairs, check_index_pool) and noun-led names (alignment_pca, protein_properties, activity_cliffs). The convention is readable but not predictable enough to infer a tool's action from its name alone.

Tool Count1/5

315 tools is an extreme mismatch for a coherent MCP tool surface. Even a broad bioinformatics workbench does not need every capability exposed as a separate tool; this volume makes discovery, selection, and maintenance impractical for an agent.

Completeness4/5

The surface covers an enormous range of molecular biology, sequencing, cloning, qPCR, phylogenetics, structure, and chemistry workflows, with lifecycle steps for many domains. Minor gaps likely exist (for example general project/file management beyond listing and loading), but the overall coverage is exceptionally broad.

Available Tools

315 tools
activity_cliffsA
Read-only
Inspect

SALI activity cliffs (Guha & Van Drie 2008) in a list of small molecules with one activity each: every pair scored as the activity difference over one minus the Tanimoto similarity of RDKit path fingerprints, steepest first; identical fingerprints with different activities score Infinity. Indices are 0-based.

NameRequiredDescriptionDefault
scaleNohow the activities are read. Values: pIc50Um (pIC50 from a µM IC50), asGiven (As given).pIc50Um
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculesYesthe structures: one SMILES or molfile per entry.
activitiesYesone number per structure, in the same order; a non-number leaves it out.

Output Schema

NameRequiredDescription
pairsYesevery pair, highest SALI first: i the more active, j, similarity, SALI
summaryYesthe cliffs in words, generated from this run

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description still adds real behavioral value beyond that: output ordering ('steepest first'), the Infinity edge case for identical fingerprints with differing activities, and 0-based indices.

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

Conciseness4/5

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

It is a single dense sentence, but it is front-loaded with the method name and citation, then the formula, ordering, edge case, and index convention. Every clause carries information, though the run-on structure slightly hurts readability.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and annotations cover safety. The description supplies the metric definition, ordering, edge case, and index convention, leaving only cross-tool routing unaddressed for this fairly complex five-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters, including the scale enum and the _files/_subject shapes. The description reinforces the pairing of molecules and activities but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description names the exact analysis (SALI activity cliffs, with a literature citation) and pins down the metric: activity difference over one minus Tanimoto similarity of RDKit path fingerprints. An agent knows precisely what is computed, though no sibling (e.g. matched_molecular_pairs, cluster_molecules) is named to contrast against.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The input constraint ('a list of small molecules with one activity each') hints at a prerequisite, but the agent is left to infer when this tool is preferable to the other molecule-analysis siblings.

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

add_notebook_figureAInspect

Put a drawing that is on screen into the lab notebook as a numbered figure: a chart, gel, map or any other picture a tool drew on the stage. It is appended to the entry the user has open (or to the one you name), captioned with the drawing, the tool that drew it and what that tool concludes now, and numbered where it falls, exactly as the Export panel and a chart's own menu do it. Vector drawings stay vector.

NameRequiredDescriptionDefault
tabNothe stage tab or the tool surface id it shows (e.g. `qpcr-curves`). Leave it out for the tab the user is looking at.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
captionNoa caption to use instead of the generated one. Leave it out unless the user asked for wording: the generated caption names the drawing, the tool and its reading.
drawingNothe drawing to take, by its name (a chart's title, e.g. "Melt curve"). Leave it out to take the first drawing of the tab.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
entry_idNoappend to this entry instead of the open one; with neither, a new entry is started and named after the drawing.

Output Schema

NameRequiredDescription
figureYesits figure number in that entry, as the preview and every export print it
captionYesthe caption written
entry_idYesthe entry the figure went into

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already state this is a non-readOnly, non-destructive, closed-world mutation. The description adds meaningful behavior beyond that: it appends rather than replaces, generates a caption from the drawing/tool/conclusion, numbers the figure, and preserves vector graphics.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the core action and then covering captioning, numbering, and vector preservation. It wastes no space and is appropriately sized for the operation.

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

Completeness4/5

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

With an output schema and complete parameter documentation, return values and parameter details need not be in the description. The description covers the key action and notebook side effects, though it does not explain the _files/_subject context parameters.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented. The description reinforces defaults for tab, caption, drawing, and entry_id, but adds little beyond what the schema already says.

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

Purpose5/5

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

The description gives a specific verb and resource—"Put a drawing ... into the lab notebook as a numbered figure"—and lists examples (chart, gel, map). It clearly distinguishes this from drawing/export siblings by framing the action as appending to a notebook entry.

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

Usage Guidelines4/5

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

It makes the usage context clear: take an on-screen drawing and append it to the open entry or a named entry. It does not explicitly compare against alternatives such as export_map_svg or draw_gel, so it falls 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.

adopt_trace_callsAInspect

Replace a Sanger read's own base calls with TraceTuner's, on the trace that is open, so the rest of the editor works from the re-called read: its sequence, its consensus, its verification against a reference, and every export. The signal is untouched — this is the same electropherogram with a second opinion about where the bases are — and every coordinate already on the read is carried across the peaks it sits on, so a trim window, a hand-corrected call and an annotation all follow. Reports what moved and what could not be placed. Use call_bases_from_trace instead to ASK what the re-call says without changing the read.

NameRequiredDescriptionDefault
modeNowhich reading to adopt. `rescore` keeps the instrument's bases and only re-measures their confidence; `denovo` derives the bases from the signal and can return a different read LENGTH; `het` and `mix` derive them and write a two-base IUB code where a second allele is present, differing only in whether the two are assumed equal in amount.rescore
tableNothe instrument and polymer the quality scale was calibrated on. There is no universal default: a base scores differently under a different table.3730pop7
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
min_ratioNofor `het` and `mix` only: how tall a second peak must be, as a fraction of the called one, to be called as a second allele. Ignored by the other two modes. Only applies when mode is het or mix.

Output Schema

NameRequiredDescription
basesYeshow many bases the read carries after the adoption
sequenceYesthe read the document now carries, trimmed and with manual calls applied
basesBeforeYeshow many it carried before it, so a gate can see the read change length
everythingPlacedYesfalse when any annotation end sat on a call the new reading does not make, so it was placed at its nearest neighbor. Wire it into a gate before trusting a boundary

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false; the description goes far beyond that by disclosing that the signal is untouched, that existing coordinates (trims, hand corrections, annotations) are carried across the peaks, that sequence/consensus/verification/exports all follow, and that it reports what moved and what could not be placed.

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

Conciseness4/5

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

The mutating action is front-loaded in the first clause, and every sentence carries real information (what changes, what does not, what to use instead). It is dense with em-dash asides and runs slightly long for the amount an agent must retain.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out, and the description still flags that it reports moved/unplaceable calls. The mutation semantics and sibling routing are covered; the only gap is how a trace comes to be 'open' (load_trace/list_traces) and whether the change is persisted.

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

Parameters3/5

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

Schema description coverage is 100% and the mode/table/min_ratio parameters are fully documented in the schema itself (including when min_ratio is ignored). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Replace a Sanger read's own base calls with TraceTuner's, on the trace that is open') and names the scope of consequences. It explicitly separates itself from the sibling call_bases_from_trace, so an agent can pick between them 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.

Usage Guidelines4/5

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

Includes a precondition ('on the trace that is open') and an explicit alternative with its selection condition: use call_bases_from_trace to ASK what the re-call says without changing the read. No exclusion is given for the adjacent call_mixed_bases_from_trace, which overlaps with the het/mix modes, so this 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.

alignment_agreementA
Read-only
Inspect

Read an alignment window and say how well its reads agree with the reference underneath them, the way the pileup's own bar does: the compared and differing base counts, plus the RefSeq gene models and known dbSNP variants over the same window. The reference is a FASTA in this project or a public UCSC assembly, exactly as the panel offers it. There is no threshold and no verdict: a rate in the tens of percent almost always means the reads were aligned to a different assembly than the one asked for, and when the file declares its own reference length the answer says so as a fact rather than as a judgement.

NameRequiredDescriptionDefault
locusNothe window, as a locus string (`chrM:3,300-3,460`). Unset, it is the whole of the alignment's first reference — the window the panel opens on.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
variantsNoalso report the known dbSNP variants in the window. Off by default, as in the panel: it is a third layer over the reads and a dense window can hold thousands.
alignmentNowhich BAM or SAM in this project, by name. Unset, it is the project's only alignment — and it refuses rather than guessing when there is more than one.
referenceNowhat to compare against: a FASTA in this project by name, or a UCSC assembly id (`hg38`, `hg19`, `mm39` — the same list the panel's picker fetches). Unset is the panel's own default, No reference, and then only the window and its annotation are reported.
gene_trackNowhich NCBI RefSeq set the gene models come from. Only meaningful against a UCSC assembly. The default is one curated transcript per protein-coding gene, which carries no mitochondrial genes at all — RefSeq Curated does. Values: ncbiRefSeqSelect (RefSeq Select and MANE), ncbiRefSeqCurated (RefSeq Curated), ncbiRefSeq (RefSeq All), ncbiRefSeqPredicted (RefSeq Predicted).ncbiRefSeqSelect

Output Schema

NameRequiredDescription
rateYesdiffering aligned bases as a fraction of compared ones, 0 when nothing matched up
genesYesthe RefSeq models overlapping the window: symbol, accession, strand and bounds, as UCSC states them
readsYesreads read for the window
noCallYesaligned bases where one side is N — counted as neither, which is where this differs from an aligner's NM
windowYesthe window actually measured, as a locus string
cautionsYeswhat this run earned: a reference whose length disagrees with the one the file declares, no-call bases counted as neither, and the window the numbers describe
comparedYesaligned bases that had a reference base to compare against — the denominator
variantsYesthe dbSNP records in the window when asked for: rsID, alleles, class, highest reported frequency and ClinVar significance
conclusionYesthe reading in one sentence, generated from this run — the panel's own words
mismatchedYesof those, how many differ
pathogenicYeshow many of those ClinVar calls pathogenic

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare a safe read-only, non-open-world profile, so the bar is lower, and the description still adds real behavior: no threshold and no verdict, refusal rather than guessing when multiple alignments exist, the dense-window warning for dbSNP variants, and the interpretation of high mismatch rates as a wrong-assembly signal. That is meaningful context beyond the annotations, though permission/authentication needs and return shape are left to the output schema.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, and the remaining sentences mostly earn their place by explaining defaults and the meaning of a mismatch rate. The prose is dense and meandering in places (the 'exactly as the panel offers it' and 'as a fact rather than as a judgement' phrasings), so it is not maximally tight, but nothing is gratuitous.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and annotations carry the safety profile; the description covers the remaining behavioral burden well (defaults, refusal semantics, interpretation guidance, variant-density caveat). Only the relationship to sibling tools is genuinely missing, which keeps it short of a 5.

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

Parameters4/5

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

Schema coverage is 100%, so a 3 would be the baseline, but the description adds interpretive meaning the schema lacks: variants is off by default because it is 'a third layer' that can hold thousands of rows, and gene_track's default (RefSeq Select) 'carries no mitochondrial genes at all — RefSeq Curated does.' The reference default of 'No reference' and the window default are also restated with intent.

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

Purpose4/5

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

The description opens with a specific verb+resource: 'Read an alignment window and say how well its reads agree with the reference underneath them,' and even names the concrete outputs (compared and differing base counts, gene models, dbSNP variants). It is clear what the tool produces, but it never names or contrasts a sibling like alignment_window or compare_reads_to_reference, which also operate over alignment windows, so sibling differentiation rests on inference.

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

Usage Guidelines3/5

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

Usage context is implied rather than stated: the description explains defaults (unset alignment, 'No reference') and warns that a tens-of-percent rate usually means a wrong assembly, which hints at when the tool is diagnostic. However, it never says when to choose this over alternatives such as alignment_window or compare_reads_to_reference, so an agent must infer the selection rule.

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

alignment_pcaA
Read-only
Inspect

Principal component analysis of the rows of an alignment: the pairwise similarity of every two rows under PID or a substitution matrix (BLOSUM62, PAM250 for protein; Jalview's DNA matrix for nucleotides), decomposed into eigenvectors, and each row's coordinate on the leading components, so rows that cluster sit together. Jalview's PCA, with its parameters: gap–gap and gap–residue columns counted, a gap never matching. Needs 4 rows. Wire alignedSequences from align_sequences.

NameRequiredDescriptionDefault
rowsYesthe ALIGNED rows, each {name, aligned}. Wire `alignedSequences` from align_sequences.
modelNothe similarity model: PID for any alphabet, BLOSUM62 or PAM250 for protein, DNA for nucleotides. Values: PID (Percent identity), BLOSUM62 (BLOSUM62), PAM250 (PAM250), DNA (DNA).PID
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
componentsNohow many leading components to report per row.

Output Schema

NameRequiredDescription
summaryYesthe model, the leading eigenvalues and their share of the total
similarityYesthe pairwise similarity matrix the analysis decomposed, rows in alignment order
coordinatesYeseach row's coordinates on the leading components, {name, pc: [PC1, PC2, …]}
eigenvaluesYesevery eigenvalue, largest first

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this a safe read-only, closed-world operation, and the description goes beyond them by disclosing the underlying algorithm's parameterization: gap–gap and gap–residue columns are counted and a gap never matches, which materially affects results. The 4-row minimum is also surfaced, which is not enforced by the schema. Output format is covered by the output schema, so no deduction there.

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

Conciseness4/5

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

Front-loaded with the core operation, then the model options, then the behavioral caveats and the wiring hint — a sensible order. It is dense and the 'gap–gap and gap–residue columns counted, a gap never matching' clause is terse to the point of being cryptic, but no sentence is redundant filler.

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

Completeness5/5

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

Given an output schema, full parameter descriptions, and read-only annotations, the description fills the remaining gaps: what the computation actually does, the row-count floor, alphabet support, and how to source the alignment. The generic `_files`/`_subject` plumbing is adequately documented in the schema itself, so nothing an agent needs to invoke this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description earns an increment by adding a constraint the schema omits: 'Needs 4 rows' gives a de facto minimum for `rows`, which has no minItems. It also restates model applicability (PID any alphabet, BLOSUM62/PAM250 protein, DNA nucleotides), which duplicates schema text, and says nothing extra about `components`.

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

Purpose4/5

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

Names a specific technique and resource: principal component analysis over the pairwise similarity of alignment rows, with the similarity model choices spelled out. It does not name any sibling it competes with (e.g. build_tree, alignment_redundancy, genotype_pca), so differentiation is left to the reader's inference, but the operation 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.

Usage Guidelines3/5

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

There is real guidance on prerequisites ('Needs 4 rows') and on input wiring ('Wire alignedSequences from align_sequences'), which tells an agent how to obtain valid input. What is missing is when to prefer this over alternatives in a large sibling set — no statement of when PCA is the right analysis versus a tree, distance, or redundancy calculation, and no exclusion criteria.

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

alignment_redundancyA
Read-only
Inspect

Find the rows of an alignment that repeat another: each row's redundancy is its highest percent identity to a row at least as long (ungapped residues), and a row at or above the threshold is redundant, so filtering keeps the longest representative of each near-identical group. Jalview's definition: a gap matches anything and the pair is compared over the shorter row. Wire alignedSequences from align_sequences.

NameRequiredDescriptionDefault
toNolast column compared, 1-based inclusive; 0 means the last column. Advanced.
fromNofirst column compared, 1-based inclusive. Advanced.
rowsYesthe ALIGNED rows, each {name, aligned}. Wire `alignedSequences` from align_sequences.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
thresholdNopercent identity at or above which a row is redundant. In %.

Output Schema

NameRequiredDescription
keptYesthe names of the rows that survive the filter, in alignment order
rowsYesevery row's redundancy, {name, identity}, in alignment order
summaryYeshow many rows are redundant at the threshold, and which
redundantYesthe redundant rows, each {name, identity}, most redundant first

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish the safe read-only, closed-world profile, so the description is free to add real substance: the exact redundancy rule (highest percent identity to a row at least as long by ungapped residues), the Jalview gap-matching convention, and the filtering consequence. This is behavior an agent could not infer from annotations or schema.

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

Conciseness4/5

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

The definition leads with the core verb and the redundancy rule, then adds the Jalview caveat and the wiring note. Three compact sentences with no filler, though the middle sentence is dense enough to require a careful read.

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

Completeness4/5

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

With an output schema present and 100% schema coverage across six parameters (including nested _files/_subject), the description only needs to carry the algorithm and data-flow. It does both, leaving only minor gaps such as return shape, which the output schema covers.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond it by explaining that threshold is a percent identity cutoff at or above which a row is redundant and by grounding the comparison span (from/to) in the Jalview shorter-row comparison. The wiring hint for `rows` connects the parameter to a producer tool.

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

Purpose4/5

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

Opens with a specific verb and resource ('Find the rows of an alignment that repeat another') and immediately defines what redundancy means here, so an agent can tell it apart from alignment_agreement or alignment_pca by concept. It stops short of naming a sibling tool it is not, which is what would earn a 5.

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

Usage Guidelines3/5

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

Provides a concrete data-flow instruction ('Wire `alignedSequences` from align_sequences') and the downstream intent ('filtering keeps the longest representative of each near-identical group'), which implies when to reach for it. However, there is no explicit when-not guidance or comparison to the other alignment tools in the sibling list.

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

alignment_windowA
Read-only
Inspect

Read one window of a BAM or SAM in this project: its reads, the depth across it, and what the pairs say about the library — the same window, filters and record cap the pileup draws. Wire reads into an alignment or a screen the way the pane's own hand-offs do.

NameRequiredDescriptionDefault
locusNothe window, as a locus string (`ctgA:1-50,001`). Unset, it is the whole of the alignment's first reference — the window the panel opens on.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
min_mapqNohide reads below this mapping quality, as the pane’s Filter reads operation does. The reads are still counted — `hidden` says how many this removed.
alignmentNowhich BAM or SAM in this project, by name. Unset, it is the project's only alignment — and it refuses rather than guessing when there is more than one.
max_readsNothe record cap. More reads than this overlap the window and the result is an even SAMPLE of them, with `sampled` saying so — the pane’s own cap is the default.
hide_secondaryNodrop secondary alignments (FLAG 0x100).
hide_duplicatesNodrop reads marked as PCR or optical duplicates (FLAG 0x400).
hide_supplementaryNodrop supplementary alignments (FLAG 0x800).

Output Schema

NameRequiredDescription
readsYesthe reads in the window after filters: name, reference, 1-based start and end, strand, MAPQ, CIGAR, TLEN and sequence — the shape an alignment or a screen takes
hiddenYesreads in the window the filters removed — 0 with an active filter is a real answer
windowYesthe window actually read, as a locus string
sampledYesmore reads overlap the window than the cap allows, so `reads` is an even sample rather than all of them
coverageYesthe depth profile as bins across the window, in order
depthPlotYesthe coverage track as the pileup draws it: each bin's lowest, mean and highest per-base depth over ALL reads, so a dropout narrower than a bin still shows in the minimum
depth_maxYesthe deepest bin
depth_meanYesmean depth across the window’s coverage bins, over ALL reads — the coverage track is full-depth, as BamView’s is, so filters do not move it
read_countYeshow many reads that is
insert_sizeYesthe |TLEN| band this library’s own proper pairs define — `min`, `max` and whether it was MEASURED here or is the untuned fallback, which is what decides whether an insert is abnormal

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this as a safe, read-only, non-destructive, non-open-world operation. The description adds useful context that the window, filters, and record cap match the pileup, and mentions downstream hand-offs, but it does not surface refusal conditions or sampling behavior in the description itself — those live only in the schema.

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

Conciseness4/5

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

Two sentences, front-loaded with the purpose, with no obvious filler. The second sentence uses somewhat opaque jargon ('hand-offs') but remains brief.

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

Completeness4/5

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

For a complex read-only tool with nine parameters, full schema coverage, and an output schema, the description is reasonably complete: it identifies the resource, the returned data categories, and the pileup-consistency behavior. The main missing pieces, such as refusal when multiple alignments exist and filtering/sampling semantics, are covered by the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so all nine parameters are already documented in detail. The tool description only alludes generally to window, filters, and record cap; it does not add parameter meaning beyond what the schema provides.

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

Purpose4/5

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

The description clearly states a specific verb and resource: read one window of a BAM or SAM, returning reads, depth, and pair/library information. It is understandable without opening the schema, though it does not explicitly distinguish itself from nearby alignment-related siblings such as map_reads or browse_region.

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

Usage Guidelines3/5

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

Usage is implied by the window/pileup framing and the hand-off note about wiring `reads` into an alignment or screen. However, no explicit when-to-use, when-not-to-use, or named alternative tools are provided, so the agent must infer appropriate contexts.

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

align_readA
Read-only
Inspect

Pairwise-align ONE sequencing read against a reference and hand on the two gapped rows, so the read can be graded. Needleman-Wunsch with free end gaps and the IUPAC substitution matrix — SeqTrace's aligner, the same call the trace editor makes, so a pipeline and the panel align a read identically. Leave reference unset to align against the record this step runs on.

NameRequiredDescriptionDefault
readYesthe read's bases — wire a trace reader's `sequence` output here, or paste them.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
referenceNowhat to align against. Unset, it is the record this step runs on (the open plasmid, or an upstream product wired into the subject).

Output Schema

NameRequiredDescription
columnsYesthe alignment's width, gaps included
identityYes% identity over the columns where both rows have a base (gaps excluded)
mismatchesYescolumns where the two rows carry different bases
alignedReadYesthe read with gaps inserted — wire into `verify_read.aligned_read`
referenceLengthYesthe reference's ungapped length in bp — wire into `verify_read.target_len`
alignedReferenceYesthe reference with gaps inserted — wire into `verify_read.aligned_ref`

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already establish that this is a safe, non-destructive, closed-world read operation. The description adds substantial unannotated behavior: Needleman-Wunsch with free end gaps, the IUPAC substitution matrix, SeqTrace parity, and deterministic alignment identical to the trace editor.

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

Conciseness5/5

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

The key action and output are front-loaded in the first sentence. The remaining sentences add useful algorithm and default-reference context without padding.

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

Completeness5/5

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

For an alignment tool with a fully described schema and an output schema, the description covers purpose, algorithm, determinism, and the important `reference` default. No essential invocation detail appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents `read`, `reference`, `_files`, and `_subject`. The description's note about leaving `reference` unset largely repeats the schema's own explanation, adding no new syntax, constraints, or examples beyond the structured fields.

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

Purpose5/5

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

The description gives a specific verb and resource: pairwise-align ONE sequencing read against a reference, producing two gapped rows. The emphasis on ONE read and pairwise alignment distinguishes it from broader siblings such as align_sequences or compare_reads_to_reference.

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

Usage Guidelines3/5

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

It implies the use case is grading a read against a reference and explains the default behavior when `reference` is unset. However, it does not explicitly name when to choose this over siblings like align_sequences, compare_reads_to_reference, or verify_read, nor does it state exclusions.

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

align_sequencesA
Read-only
Inspect

Multiple-sequence alignment over several sequences, under either of TWO engines that answer different questions and neither of which is a fallback for the other. poa (partial-order, poapy) aligns into a graph, keeps every path a read took and produces its own consensus row — what a pile of reads over one locus wants. progressive (biotite) computes Feng-Doolittle distances, clusters them into a guide tree and merges along it under "once a gap, always a gap" — the classic MSA algorithm, what a FAMILY of homologous genes wants, and what a reader coming from Clustal or MUSCLE expects. Wire many upstream record/sequence outputs into sequences, or name library documents.

NameRequiredDescriptionDefault
gapNo`poa` only: score for a gap column. Negative. Only applies when engine is poa. Advanced.
matchNo`poa` only: score for a pair of identical symbols. Only applies when engine is poa. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
engineNowhich aligner builds the alignment. They answer DIFFERENT questions: `poa` keeps every path through a pile of reads and emits its own consensus row, `progressive` merges a family along a guide tree the way Clustal and MUSCLE do. Each engine reads only its own parameters below. Values: poa (Partial-order (poapy) - reads over one locus), progressive (Progressive (biotite) - a family, guide-tree merged).poa
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
gap_openNo`progressive`, affine only: the penalty for STARTING a gap. Negative. Only applies when affine_gap is true.
mismatchNo`poa` only: score for a mismatching pair. Negative. Only applies when engine is poa. Advanced.
sequencesNothe sequences to align — wire several upstream outputs here, or list library document names/ids.
affine_gapNo`progressive` only: `false` charges one flat penalty per gap column; `true` charges separate opening and extension penalties, which is what keeps a real indel as ONE gap instead of many. Only applies when engine is progressive.
gap_extendNo`progressive`, affine only: the penalty for each column a gap is extended by. Negative, and gentler than `gap_open` - an extension harsher than the opening makes the aligner prefer many short gaps to one long indel. Only applies when affine_gap is true.
guide_treeNo`progressive` only: which tree the merge follows. The Feng-Doolittle distances are the aligner's either way; this chooses only how they are clustered into an order. UPGMA is biotite's own and the one the port reproduces byte-for-byte; neighbour-joining and BIONJ do not assume a molecular clock, so on sequences evolving at different rates they group by relatedness where UPGMA groups by raw similarity - which is exactly the case where the guide tree changes the alignment. Values: upgma (UPGMA (biotite's own)), nj (Neighbour-joining), bionj (BIONJ), wpgma (WPGMA). Only applies when engine is progressive.upgma
gap_penaltyNo`progressive` only: the flat penalty per gap column. Negative. Only applies when affine_gap is false.
align_matrixNo`progressive` only: the substitution matrix the ALIGNMENT itself is scored with - distinct from `score_matrix`, which only scores the quality report afterwards. `auto` reads the alphabet: EDNAFULL for nucleotides, BLOSUM62 for protein. Naming the wrong one is not an error the engine can raise - BLOSUM62 reads A, C, G and T as alanine, cysteine, glycine and threonine and returns a number. Values: auto (Auto - from the alignment's alphabet), EDNAFULL (EDNAFULL - nucleotides (EMBOSS NUC.4.4)), BLOSUM62 (BLOSUM62 - amino acids). Only applies when engine is progressive.auto
global_alignNoglobal alignment rather than local. Poapy's own default is LOCAL; both this tool and the MSA inspector open on global, which is the choice a full-length comparison wants - switch it off for reads over part of a locus. Only applies when engine is poa. Advanced.
score_matrixNosubstitution matrix for the pyMSA sum-of-pairs and star scores in the quality report. Both engines. Left unset only the matrix-free scores are computed (entropy, % non-gaps, % totally conserved columns) - an honest absence rather than a score under a matrix that does not match the alphabet. Values: PAM250 (PAM250 - amino acids, greater evolutionary distance), BLOSUM62 (BLOSUM62 - amino acids), EDNAFULL (EDNAFULL - nucleotides). Advanced.
include_subjectNoalso align the node's subject (the open or wired record).
terminal_penaltyNo`progressive` only: `true` charges overhanging ends like an internal gap - right for full-length homologues. `false` makes them free, which is right when a sequence covers only part of the region, e.g. a read against a gene. Only applies when engine is progressive.

Output Schema

NameRequiredDescription
fitYesper row: its closest row in this alignment, their identity here, and the same pair's identity aligned on its own with free end gaps (biotite align_optimal) — the loss shows where the alignment holds a row out of register; `outliers` names the rows flagged. `{ ok: false, reason }` when the check could not run
rowsYesaligned rows (name + gapped sequence)
countYesnumber of aligned sequences (excluding the consensus row)
engineYeswhich aligner produced this alignment — `poa` or `progressive`
figureYesthe alignment's first 80 columns drawn as the MSA canvas opens on them: rows named, residues shaded by column identity, the conservation line under the block. draw_alignment draws any other window
lengthYesalignment width in columns
scoresYesthe pyMSA quality scores: summed entropy (nats, pyMSA's sign — negative), % non-gaps, % totally conserved columns, and the sum-of-pairs/star pair when a `score_matrix` was named
consensusYesthe per-column majority consensus (POA returns its own graph consensus row; the progressive engine has no graph, so the majority is the consensus for both)
conservationYesthe Clustal-style conservation line, one character per column — `*` where every row carries the same residue and the column is ungapped
guideTreeNewickYes`progressive` only: the guide tree the merge followed, in Newick, labelled with the row names. Branch lengths are deliberately omitted — a guide tree's heights are a clustering artifact, not divergence estimates
alignedSequencesYesthe aligned input rows only, excluding the generated consensus — wire this into build_tree

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and destructiveHint=false, yet the description still adds high-value non-obvious behavior: poapy's own default is LOCAL but this tool opens on global, and 'naming the wrong one is not an error the engine can raise — BLOSUM62 reads A, C, G and T as alanine...' which flags a silent-corruption mode. It also explains the gap_open vs gap_extend asymmetry ('an extension harsher than the opening makes the aligner prefer many short gaps to one long indel') and marks which parameters are ignored by which engine.

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

Conciseness4/5

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

Front-loaded with the one fact that matters (two engines, neither a fallback), then engine-by-engine detail. For 17 parameters the length is defensible, though the embedded asides about biotite porting 'byte-for-byte' and Clustal/MUSCLE lineage are more flavor than triage value.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. Given the tool's complexity, the description does the remaining work: it disambiguates all four enum-bearing parameters (engine, guide_tree, align_matrix, score_matrix), warns about the silent wrong-matrix case, and routes input assembly. Only the required:[] surface (_subject + include_subject as an alternative to sequences) is left implicit.

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

Parameters4/5

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

Schema coverage is 100%, so the schema baseline is 3; the description earns above that by supplying the conceptual frame the schema lacks — the two engines answer different questions, engine-scoped parameters are inert outside their engine, and the align_matrix/score_matrix split (alignment scoring vs quality-report scoring) is spelled out. It stops short of saying what the sequences parameter requires (it is not marked required anywhere) or how _subject/include_subject interact with sequences.

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

Purpose4/5

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 ('Multiple-sequence alignment over several sequences') and immediately frames the two-engine split, which is the tool's real identity. It distinguishes the two internal modes decisively but never names the sibling it competes with (align_read for pairwise, ebi_align for remote MSA), so the agent must infer sibling boundaries itself.

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

Usage Guidelines4/5

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

Engine selection guidance is unusually explicit: 'what a pile of reads over one locus wants' versus 'what a FAMILY of homologous genes wants, and what a reader coming from Clustal or MUSCLE expects' — plus the warning that neither is a fallback for the other. It also tells the agent how to feed inputs ('wire many upstream record/sequence outputs into sequences, or name library documents'). What's missing is any statement of when to prefer this over ebi_align or align_read, and no prerequisites/minimum sequence count.

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

analyze_melt_curvesA
Read-only
Inspect

Melt curves to melting temperature, under any of THREE engines that answer different questions and none of which is a fallback for another. plate (RDML-Python) normalises, derives twice, calls the peaks of -dF/dT and CLASSIFIES them against the target's expected Tm into per-reaction verdicts — one peak in the window is the product, an extra peak is an artifact or a primer dimer, no peak at all is a reaction that did not amplify; it is the only engine that produces a verdict. vertex (MBmca diffQ) fits a quadratic near the extremum and reports its vertex, so the Tm is NOT one of the sampled temperatures — the only sub-grid answer. curve (qpcR) does no plate normalisation and gives no verdicts, but reports every melting peak with the AREA under it. Replicate spread travels with all three, because it describes the readings rather than the method.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
engineNowhich of the three engines runs. They answer DIFFERENT questions: `plate` is the only one that produces a verdict, `vertex` the only one whose Tm is not a sampled temperature, `curve` the only one that reports peak areas. Values: plate (Plate (RDML-Python) - normalise, classify, verdicts), vertex (Vertex (MBmca diffQ) - sub-grid Tm), curve (Per curve (qpcR) - peak areas).plate
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cut_areaNo`curve` only: drop peaks whose area is under this fraction of the largest. 0 keeps every peak, which is upstream's own default. Only applies when engine is curve. Advanced.
extremumNo`vertex` only: which extremum the melt sits at. `auto` reads each curve's direction, because upstream assumes a signal that RISES with temperature and a solution-phase melt FALLS — on which the default walks to the far end of the curve and returns a plausible-looking wrong Tm. Only applies when engine is vertex.auto
resampleNo`vertex` only: resample the curve onto an even temperature grid before differentiating. Only applies when engine is vertex. Advanced.
all_peaksNo`vertex` only: report every peak the curve carries, not the dominant one alone. Only applies when engine is vertex. Advanced.
melt_tableYesthe melt table: a header row, first column the temperature and every other column one reaction's fluorescence. The same table the Melt tab takes.
span_peaksNo`curve` only: the span Friedman's super smoother uses when the peaks are called. Only applies when engine is curve. Advanced.
expected_tmNothe product's expected melting temperature, which is what turns a peak list into a verdict. Left unset, every peak is reported and none is classified - an honest absence rather than a guess. Read by the `plate` engine only, because it is the only one that classifies. In C. Only applies when engine is plate.
norm_methodNo`plate` only: how each curve is normalised before it is derived. Only applies when engine is plate. Advanced.exponential
peak_cutoffNo`plate` only: the height a candidate must reach, as a percentage of the largest peak. In %. Only applies when engine is plate. Advanced.
span_smoothNo`curve` only: the smoothing span of the cubic spline fitted before the analytic derivative. Only applies when engine is curve. Advanced.
fluor_sourceNo`plate` only: which matrix a peak's fluorescence drop is read from — the normalised curve or the smoothed raw one. Only applies when engine is plate. Advanced.normalised
expo_low_tempNo`plate` only: low end of the window the EXPONENTIAL background is fitted over. In C. Only applies when norm_method is exponential or combined. Advanced.
peak_low_tempNo`plate` only: lowest temperature a peak is looked for at. In C. Only applies when engine is plate. Advanced.
expo_high_tempNo`plate` only: high end of the exponential fit window. In C. Only applies when norm_method is exponential or combined. Advanced.
peak_high_tempNo`plate` only: highest temperature a peak is looked for at. In C. Only applies when engine is plate. Advanced.
peak_max_widthNo`plate` only: widest a peak may be before it is not read as one product. In C. Only applies when engine is plate. Advanced.
window_ceilingNo`vertex` only: the largest neighbourhood half-width the quadratic is tried at. Every width from 2 up to this is fitted and the one with the best adjusted R-squared wins, so the Tm arrives with the fit quality that chose it. Only applies when engine is vertex.
true_peak_widthNo`plate` only: half-width of the window around `expected_tm` a peak must fall in to count as the product. In C. Only applies when engine is plate. Advanced.
replicate_robustNoreplicate spread as median and MAD rather than mean and SD. Engine-independent: it describes the readings, so every run carries it. Advanced.
replicate_percentNoreport replicate spread as a PERCENTAGE of the mean rather than in degrees. Advanced.
second_derivativeNo`vertex` only: locate the inflection points of the melt (diffQ2) rather than the peak of the first derivative. Only applies when engine is vertex. Advanced.
artifact_peak_widthNo`plate` only: half-width used when an extra peak is measured as an artifact. In C. Only applies when engine is plate. Advanced.
bilin_low_stop_tempNo`plate` only: end of the low seed window. In C. Only applies when norm_method is bilinear or combined. Advanced.
bilin_high_stop_tempNo`plate` only: end of the high seed window — same narrow effect as its start, for the same reproduced reason. In C. Only applies when norm_method is bilinear or combined. Advanced.
bilin_low_start_tempNo`plate` only: start of the LOW seed window the bilinear background is fitted from. In C. Only applies when norm_method is bilinear or combined. Advanced.
bilin_high_start_tempNo`plate` only: start of the high seed window. NARROWER THAN IT LOOKS, and upstream's own quirk reproduced: the high baseline scan walks a hard-coded 90-91 C seed, so this knob feeds ONLY the first exponential-free fit and moves the result far less than the low window does. The windows actually chosen come back in the result. In C. Only applies when norm_method is bilinear or combined. Advanced.

Output Schema

NameRequiredDescription
countYeshow many reactions were analysed
engineYeswhich engine produced these rows, named: the three answer different questions and a Tm without its engine is not comparable
meanTmYesmean dominant Tm over the reactions that produced a peak
noPeakYesreactions with no melting peak at all: a reaction that did not amplify, reported rather than dropped
targetsYes`plate` only: per target, the reactions that contributed a product peak and their averaged Tm against the expected one. Empty for `vertex` and `curve`
meltPlotYesthe melt curves as read from the table, one line per reaction, fluorescence against temperature. Every engine reads this same input
reactionsYesone row per reaction, in the shape the CHOSEN engine reports: `plate` gives peaks plus a verdict, `vertex` gives the sub-grid Tm with the adjusted R-squared that chose its window, `curve` gives every peak with its area
classifiedYeswhether the peaks were classified, and why not when they were not — including 'this engine does not classify', which is a property of the choice and not a failure
derivativePlotYes`plate` only: −dF/dT of each reaction after normalisation and smoothing, the curve its peaks are called on, one line per reaction. Null for `vertex` and `curve`, which fit near the extremum and report no whole derivative
replicateSpreadYeslocation and deviation per temperature per target, from the plate's own replicates. Engine-independent: it describes the readings, not the method, so every run carries it

TDQS

A4.2/5.0
Behavior5/5

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

Adds substantial context beyond the readOnly/non-destructive annotations: only `plate` yields verdicts and classifications, leaving expected_tm unset yields an honest absence rather than a guess, and the `extremum` auto default is flagged as a trap because upstream assumes a rising signal while solution-phase melts fall, returning a plausible-looking wrong Tm. The cross-engine note that replicate spread travels with all three because it describes readings, not method, is exactly the kind of behavior an agent cannot infer from schema.

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

Conciseness4/5

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

Front-loaded and dense with intent—each clause about the engines carries decision-relevant content. It is written as one very long multi-clause paragraph with heavy backticking and emphasis, which is harder to scan than the information warrants, but there is little outright waste.

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

Completeness4/5

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

Given 29 parameters, an output schema, and full schema descriptions, the prose covers what cannot be derived: engine selection semantics, the verdict-classification contract, and the one dangerous default. What's missing is only the inter-tool context—how this differs from melt_profile or melting_temperature—which leaves a small but real gap for an agent choosing among siblings.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining how engine choice partitions the 29 parameters and by giving the rationale behind expected_tm and the auto-extremum hazard. The remaining engine-specific knobs (peak windows, bilinear seeds, window_ceiling) carry their meaning in the schema already, so the description adds framing rather than new parameter meaning.

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

Purpose4/5

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

The description opens with a specific verb+resource ('Melt curves to melting temperature') and then distinguishes its three internal engines by what each uniquely answers (verdicts / sub-grid Tm / peak areas). It never names or contrasts with the sibling tools that overlap this space (melting_temperature, melt_profile, call_cq), so an agent cannot tell from this text alone when to reach for this tool rather than those.

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

Usage Guidelines4/5

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

Clear routing guidance among the three engines, including the explicit statement that none is a fallback for another, and the note that expected_tm is what converts peaks into verdicts. Still no guidance about when this tool applies versus sibling Tm/curve analyses, which is the more consequential selection decision.

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

annotate_regionA
Read-only
Inspect

Say what a genomic region holds in the reference tracks: the genes and RefSeq transcripts it overlaps, which complete coding sequences it CONTAINS (the only case where a residue-level design is honest), the DGV structural variants seen there in control populations with their frequencies, and how much of it lies in segmental duplications and how similar the best paralogue is. Every track answers with its authority, table and retrieval date. Coordinates are 1-based and inclusive, as a person writes chr17:41196312-41277500.

NameRequiredDescriptionDefault
endYeslast base of the region, 1-based and inclusive.
buildYesthe assembly the coordinates are on, by the UCSC name the cached tracks use (hg19, hg38). A build with no cached track is refused by name rather than answered empty.
startYesfirst base of the region, 1-based.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
dosageNowhich DGV evidence is comparable: `loss` for a deletion call, `gain` for a duplication, `any` for either. Balanced and unclassified variant types (insertions, inversions) are never counted as dosage evidence, and the count of them is reported instead. Values: any (Either direction), loss (Loss), gain (Gain).any
tracksNowhich tracks to read, comma-separated: `genes`, `dgv`, `segdups`. Unset reads all three. The coding verdict comes with `genes`.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
chromosomeYesUCSC-style sequence name; a bare `17` or `X` is read as `chr17`/`chrX`.

Output Schema

NameRequiredDescription
dgvYesDGV records of comparable dosage with study, sample size, frequency and reciprocal overlap; the fraction of the region they cover; how many balanced or unclassified records were not counted; the track provenance
genesYesoverlapping gene symbols, the ones with coding sequence in the region, and every transcript with the exons it touches; carries the track provenance
codingYesthe coding verdict (none, noncoding, partial, whole), the complete CDSs the region contains, the partial ones with how much of each it holds, and the reason a residue-level action is refused when it is
segdupsYessegmental duplications overlapping the region with their partner locus and identity, the fraction of the region they cover, and the track provenance
summaryYeswhat each track answered for this region, generated from the run

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description goes well beyond that by disclosing refusal semantics ('a build with no cached track is refused by name rather than answered empty'), provenance reporting ('every track answers with its authority, table and retrieval date'), coordinate convention, and the counting rule that balanced/unclassified variant types are never dosage evidence but are reported instead.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, and the coordinate convention is placed last where it belongs. The first sentence is a long enumerated run-on that requires re-reading, and a few parentheticals ('the only case where a residue-level design is honest') are interpretive rather than operational, keeping it from a 5.

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

Completeness4/5

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

An output schema exists, so the description need not document return values, yet it usefully characterizes what each track reports. With 8 parameters (4 required), a nested _subject object and 100% schema coverage, the description plus schema give an agent enough to call the tool correctly; the missing piece is explicit routing against sibling region/variant tools.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description genuinely adds meaning on top: it explains that 'tracks' controls which of genes/dgv/segdups is read and that the coding verdict is coupled to the 'genes' track, and it restates the build-refusal behavior tied to the 'build' parameter. It adds little for the coordinate parameters beyond what the schema already says (1-based, inclusive), so it is not a 5.

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

Purpose4/5

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

The description names a concrete verb ('say what a genomic region holds') and enumerates exactly what is returned: overlapping genes and RefSeq transcripts, contained complete CDS, DGV structural variants with frequencies, and segmental-duplication/paralogue similarity. That is far more specific than a restatement of the name. It stops short of a 5 because it never distinguishes itself from plausible siblings such as browse_region or lookup_variant, which an agent could reasonably confuse it with.

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

Usage Guidelines3/5

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

Usage is only implied: the agent can infer this is the tool for characterizing a coordinate interval, and the note that tracks defaults to all three and that the coding verdict comes with 'genes' guides how to scope a call. However, there is no explicit when-to-use versus when-not, no prerequisite statement, and no alternative sibling is named for region-level questions.

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

antibody_antigen_contactsA
Read-only
Inspect

Type the ANTIBODY-ANTIGEN INTERFACE of a deposited complex: which residue of each antibody chain touches which residue of the antigen, how close, and what kind of interaction each pair makes - ionic, polar, weak polar, hydrophobic, aromatic, carbonyl, or a disulfide. The antigen is found rather than named: a protein chain with no immunoglobulin variable domain is the thing being bound. Geometric definitions are CREDO's as Arpeggio implements them, graded contact-for-contact against pdbe-arpeggio. polar is the hydrogen-bond criterion WITHOUT the donor angle, because a crystal structure carries no hydrogens; it is the superset an angle test would filter, and no angle-checked hydrogen bond is claimed.

NameRequiredDescriptionDefault
textYesthe coordinate file's contents - a PDB flat file or a PDBx/mmCIF; the format is read from the bytes, not from a name.
modelNowhich model of an ensemble to type, 1-based: conformers touch in different places, so one is typed rather than all.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
antibodyChainNotype only this chain against the antigen. Left out, every chain carrying a variable domain is typed.
antigenChainsNocomma-separated chain ids to treat as the antigen. Left out, every protein chain with no variable domain is the antigen.
interactingCutoffNoatom pairs further apart than this (Å) are not reported at all; Arpeggio's own default is 5.

Output Schema

NameRequiredDescription
byTypeYesatom pairs carrying each type over the whole interface, distance bands included
contactsYesone row per residue pair: the antibody residue (chain, author number, name, and its scheme position where it sits in a variable domain), the antigen residue, the closest atom distance, the atom-pair count, and the interaction types
residuesYeshow many residues each side contributes, per antibody chain
antigenChainsYesthe chain ids treated as the antigen
antibodyChainsYesthe chains typed, each with its variable-domain chain types

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint false, and openWorldHint false, but the description adds substantial behavioural context beyond them. It discloses the interaction classes reported, the geometric definitions used (CREDO's as Arpeggio implements them), and an important limitation: `polar` is a hydrogen-bond criterion without the donor angle because crystal structures carry no hydrogens, so no angle-checked hydrogen bond is claimed.

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

Conciseness4/5

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

The description is front-loaded with the primary purpose and then adds necessary caveats, with no obvious filler. It is longer and denser than most definitions, but every sentence contributes to understanding the tool's scope or its geometric/chemical contract.

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

Completeness5/5

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

Given the rich schema coverage, read-only annotations, and an output schema, the description is complete enough for an agent to invoke the tool correctly. It covers purpose, antigen-detection behaviour, interaction semantics, and the key limitation of the polar criterion without needing to duplicate return-value documentation.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter definitions already carry the semantic load. The description adds conceptual context about antigen discovery and the `polar` interaction type, but does not give additional parameter-specific syntax, format, or edge-case guidance beyond what the schema provides.

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

Purpose5/5

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

States a specific verb ('Type') and resource ('ANTIBODY-ANTIGEN INTERFACE of a deposited complex'), and enumerates exactly what is reported: which residues touch, how close, and the interaction type. An agent can distinguish this from neighbouring antibody tools such as antibody_liabilities, antibody_isotype, or graft_antibody_cdrs 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.

Usage Guidelines4/5

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

The description gives clear context for use: a deposited complex is required, and the antigen is found rather than named, with the rule that chains lacking an immunoglobulin variable domain are treated as antigen. It does not explicitly name alternative tools or state when not to use this one, so it falls short of the top mark.

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

antibody_canonical_classesA
Read-only
Inspect

Assign each CDR of an antibody heavy, kappa or lambda variable domain to its canonical structure class: SCALOP's length-independent clusters of known loop conformations (CDR-H1, H2, L1, L2, L3; H3 has no canonical classes). Each loop is scored against every cluster of its length by the cluster's position-specific log-odds; the best score above SCALOP's threshold names the class and its median structure (a PDB chain). Graded against the real SCALOP on every heavy, kappa and lambda chain of ANARCI's PDB benchmark.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
schemeNothe numbering the clusters are read in. Values: imgt (IMGT), chothia (Chothia).imgt
proteinYesthe protein sequence (one-letter amino acids); every heavy, kappa and lambda variable domain in it is classified.
speciesNospecies whose HMMs are preferred when numbering (ANARCI's default: human and mouse).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
definitionNowhere each CDR begins and ends, by SCALOP's own tables. Values: imgt (IMGT), chothia (Chothia), north (North).north

Output Schema

NameRequiredDescription
classesYesone `CDR: class` string per CDR, in sequence order (`H1: H1-13-A`, `None` where no class fits)
domainsYesper heavy, kappa or lambda domain: chain type, span, and per CDR the loop sequence, its class (cluster id), the median structure, the cluster's size, the outcome, SCALOP's threshold, every candidate cluster's score, and each residue's position, 0-based sequence index and log-odds in the assigned cluster

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safe read-only profile is clear. The description adds valuable context beyond annotations: it explains the scoring algorithm (log-odds against length-matched clusters), the threshold used, and that output includes the assigned class and median structure, which helps an agent understand the operation's behavior.

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

Conciseness4/5

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

The description is front-loaded with the core action and stays within three sentences. The final sentence about being graded against the real SCALOP benchmark is somewhat extraneous for tool selection but does not bloat the description excessively.

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

Completeness4/5

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

Given that an output schema exists and annotations cover safety, the description provides enough context: it states the protein scope, lists which CDRs are classified, and notes that H3 is excluded. It could mention prerequisite numbering steps, but for a read-only classification tool the current detail is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters, including enums for scheme, definition, and species. The description adds only that H3 has no canonical classes, which lightly clarifies the classification scope but does not add parameter syntax or format details beyond the schema.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Assign each CDR of an antibody heavy, kappa or lambda variable domain to its canonical structure class.' It explicitly names the CDR types covered and excludes H3, making the scope unambiguous and distinguishable from sibling tools like number_antibody or antibody_liabilities.

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

Usage Guidelines2/5

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

The description explains what the tool does but gives no guidance on when to use it versus alternatives such as number_antibody (which may be a prerequisite) or graft_antibody_cdrs. There is no mention of when-not to use it or what inputs must already be prepared.

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

antibody_isotypeA
Read-only
Inspect

Name the CONSTANT region of an antibody chain: which immunoglobulin gene and allele it carries (IGHG1, IGHA2, IGKC, IGLC2 …), and where each IMGT domain sits on it — CH1, the hinge, CH2, CH3, the secretory tail and the membrane exons, or the single C region of a light chain. A domain search says 'a C1-set immunoglobulin domain'; this says which isotype it is. Reads IMGT/GENE-DB's own per-label translations for every species, and is graded against UniProtKB's curated human constant chains and their CH1/hinge/CH2/CH3 regions.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
proteinYesthe chain (one-letter amino acids); the constant region in it is found, so a whole heavy chain is fine.
speciesNoonly consider genes of this species, spelled as IMGT spells it (Homo sapiens, Mus musculus). Left out, every species in the catalogue competes and the answer says which won.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
minIdentityNoa domain matching less of its reference than this is not reported.

Output Schema

NameRequiredDescription
geneYesthe IMGT gene the constant region matches (IGHG1)
alleleYesthe allele, as IMGT numbers them (01)
domainsYeseach IMGT label placed on the chain: label, start, end (1-based inclusive), identity, coverage
speciesYesthe species whose gene answered
identityYesidentical residues over every aligned column, 0 to 1

TDQS

A4.2/5.0
Behavior4/5

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

With readOnly/openWorld/destructive annotations already covering safety, the description adds valuable provenance: it reads IMGT/GENE-DB per-label translations for every species and is graded against UniProtKB curated human constant chains. It does not discuss error modes or rate limits, but adds meaningful context beyond annotations.

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

Conciseness4/5

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

Front-loaded with the core purpose and well-organized into purpose, contrast, and provenance sentences. Slight redundancy repeats CH1/hinge/CH2/CH3 and the domain list, but overall efficient for the tool's complexity.

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

Completeness5/5

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

Given the output schema, annotations, and full schema coverage, the description supplies what is missing: clear purpose, contrast with domain search, and data-source behavior. Nothing essential for an agent to invoke it correctly is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already defines protein, species, minIdentity, and record parameters. The description adds no parameter-level detail beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: name the constant region of an antibody chain, identifying immunoglobulin gene/allele and IMGT domain positions. It explicitly distinguishes itself from a generic domain search, so an agent can tell it apart from scan_protein_domains-style siblings.

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

Usage Guidelines4/5

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

Contrasts with domain search by explaining that this tool reports the isotype, not just a C1-set domain. Provides clear context for use, but does not name specific sibling tools or state when not to use it.

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

antibody_liabilitiesA
Read-only
Inspect

Scan antibody and TCR variable domains for sequence liabilities (Asn deamidation, Asp isomerization, N-glycosylation sequons, Asp-Pro cleavage, Met and Trp oxidation, unpaired or missing conserved cysteines), each placed in its IMGT region so CDR hits can be told from framework ones. Every motif is cited to its source.

NameRequiredDescriptionDefault
rulesNowhich liabilities to report (default: all).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
cdrOnlyNoreport only liabilities that start inside a CDR.
proteinYesthe protein sequence (one-letter amino acids).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYesnumber of liabilities reported
cdrCountYesnumber of reported liabilities inside a CDR
liabilitiesYeseach hit: rule, motif, 0-based start and end, IMGT positions, region, whether in a CDR, source

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: hits are annotated with their IMGT region so CDR vs framework can be distinguished, and every motif is cited to a source. It does not discuss limits, performance, or failure modes, but the annotated baseline keeps the bar modest.

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

Conciseness5/5

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

Two sentences with zero filler: purpose plus the enumerated checks up front, then the region-placement and citation behavior. Every clause carries information an agent can act on.

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

Completeness4/5

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

An output schema exists, so return-value explanation is not required, and the description covers what is scanned, the liability taxonomy, and the region/citation behavior. It could be more explicit that the input must be a variable-domain sequence for IMGT placement to be meaningful, which is the only notable gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters, including the rules enum values and cdrOnly semantics. The description's enumeration of liability classes corroborates the rules enum and the IMGT-region framing explains why CDR filtering matters, but it adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('Scan') and resource ('antibody and TCR variable domains') and enumerates the exact liability classes it reports. An agent can distinguish this from neighbors like protein_properties, number_antibody, or antibody_molecule 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.

Usage Guidelines3/5

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

The domain restriction to antibody/TCR variable domains implies when the tool applies, but there is no explicit when-to-use versus alternatives and no stated prerequisites or exclusions. Usage is inferable rather than spelled out.

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

antibody_moleculeA
Read-only
Inspect

Properties of an assembled antibody from its heavy and light chains: molecular weight, isoelectric point, net charge at a pH, and the extinction coefficient and A280 with cysteines reduced and with every pair formed into a cystine, for a Fab (1 heavy + 1 light) or an IgG (2 + 2). Each chain keeps its own termini, so this is not the same as pasting the chains end to end. Graded against Biopython ProtParam over every heavy/light pair of ANARCI's PDB benchmark.

NameRequiredDescriptionDefault
pHNothe pH the net charge is reported at.
heavyYesthe heavy chain (one-letter amino acids), as much of it as the molecule carries.
lightYesthe light chain (kappa or lambda, one-letter amino acids).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNohow many copies of each chain the molecule holds. Values: fab (Fab (1 heavy + 1 light)), igg (IgG (2 heavy + 2 light)).igg
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
absorbanceYesA280 of a 1 g/L solution, `reduced` and `cystines`
chargeAtPHYesnet charge at the requested pH
extinctionYesε280 in M⁻¹ cm⁻¹, `reduced` and `cystines`
molecularWeightYesaverage mass of the whole molecule, Da (chains reduced)
isoelectricPointYesisoelectric point of the whole molecule (Bjellqvist pKs, each chain with its own termini)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds useful behavioral detail: it computes MW, pI, pH-dependent net charge, extinction coefficient, and A280 under reduced and cystine-paired cysteine states, and it discloses the chain-termini handling and benchmark validation.

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

Conciseness4/5

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

The description is three dense sentences, front-loaded with the computed properties and format distinction. The final benchmark sentence is somewhat ancillary but supports trustworthiness, and every sentence contributes without excessive repetition.

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

Completeness4/5

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

An output schema exists, so return values need not be exhaustively described, and annotations cover safety and world scope. The description nonetheless supplies enough context about antibody assembly, Fab/IgG formats, cysteine treatment, and termini handling for correct invocation, leaving only sibling-choice guidance as a minor gap.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents pH, heavy, light, format, _files, and _subject. The description adds meaning beyond the schema by clarifying that heavy and light chains are assembled as a molecule rather than concatenated, and by explaining the Fab versus IgG copy-number distinction in terms of assembled antibody structure.

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

Purpose4/5

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

The description states a specific resource and computed outputs: properties of an assembled antibody from heavy and light chains, including MW, pI, net charge, extinction coefficient, and A280 for Fab or IgG. It is clearly distinct from generic protein_properties because it specifies antibody assembly, but it does not explicitly name or compare against 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.

Usage Guidelines3/5

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

Usage is implied by the description: use it to compute molecular properties for an assembled Fab or IgG from separate heavy and light chains. The caveat that chains keep their own termini hints at correct versus incorrect usage, but there is no explicit when-to-use guidance or comparison with alternatives such as protein_properties or antibody_isotype.

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

antibody_position_frequenciesA
Read-only
Inspect

How common each residue of an antibody variable domain is at its IMGT position, and which residues are rarer there than a cut (abYsis's 1% "unusual residue" by default). Two distributions: IMGT's own germline V and J alleles of a species (one count per reference allele), or a bundled Observed Antibody Space repertoire subset (one count per unique expressed sequence; human naive B cells, Jaffe et al. 2022). Graded against independent pandas counts of ANARCI's germline alignments and of every OAS data unit of the subset.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
proteinYesthe protein sequence (one-letter amino acids); every antibody and T-cell-receptor variable domain in it is read.
speciesNospecies whose HMMs are preferred when numbering (ANARCI's default: human and mouse).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
rare_belowNoa residue is rare where its share of the alleles or sequences is below this fraction (abYsis's unusual-residue cut is 0.01).
distributionNowhat each position is counted over: `germline` (IMGT's V and J alleles of `germline_species`) or `repertoire` (the bundled human OAS subset of expressed sequences).germline
germline_speciesNothe species whose IMGT germline alleles each position is counted over (germline distribution only; the repertoire is human).human

Output Schema

NameRequiredDescription
rareYesone `IMGT position residue (count of n)` string per rare residue, in sequence order
domainsYesper domain: chain type, span, what the table counted (germline allele counts, or the repertoire's sequence count and subset), and per residue its IMGT position, 0-based sequence index, count, denominator, frequency, the commonest residue there and whether it is rare

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine analytical context (one count per reference allele vs one count per unique expressed sequence, the abYsis 1% cut default, the human naive B-cell provenance), but says nothing about cost, runtime, sequence-size limits, or how multiple variable domains in one input are handled.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, followed by the two distribution modes and the default cut. The closing sentence about being 'graded against independent pandas counts' is validation metadata rather than task guidance, so it is the one sentence that does not clearly earn its place for an agent.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers the analytical scope, the two counting universes, and the rarity threshold. Combined with complete schema descriptions for 7 nested parameters, this is nearly sufficient for correct invocation, missing only routing guidance against sibling antibody tools.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes slightly beyond it by explaining what the two `distribution` values actually count over and by tying `rare_below` to abYsis's 0.01 unusual-residue convention. It does not clarify `germline_species` vs `species` interplay, but the added meaning is real.

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

Purpose4/5

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

The description names a specific resource (per-residue frequencies of an antibody variable domain at IMGT positions) and a specific verb-equivalent (count/compare to a rarity cut). It is clearly distinct from numbering or liability tools, though it never names a sibling (e.g. number_antibody, antibody_liabilities) to reinforce that separation.

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

Usage Guidelines3/5

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

Usage is implied through the two distribution modes: germline (IMGT V/J alleles) vs repertoire (bundled human OAS subset), which tells an agent what each mode means but not when to prefer one. There is no explicit when-to-use, when-not-to-use, or alternative-tool routing.

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

apply_feature_fileAInspect

Put the features from a GTF in this project onto the open record. A GTF lists features and their positions and carries no sequence, so this is how one reaches a molecule. It REFUSES unless something says the two are in the same coordinate space: if the file names a genome build and the record names the same one it proceeds; if they name different ones it refuses outright; if either is silent it refuses until you pass coordinates_only, which states that you are applying the intervals as positions in this record's own numbering with no genome correspondence checked. Reports what would not fit rather than trimming it.

NameRequiredDescriptionDefault
fileNothe annotation file in this project, by name. Unset with exactly one present uses it; with several, this refuses and names them rather than picking.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe seqid within the file whose features to apply (a GTF names one per row). Unset with exactly one present uses it; with several, this refuses and names them — applying the wrong chromosome's intervals is the mistake this parameter exists to prevent.
coordinates_onlyNostate that you are applying the intervals as COORDINATES — positions in this record’s own numbering — with no genome correspondence checked. Applying coordinates on that basis is a claim about your own data, and the run records it as the basis it used. Required whenever either side is silent about its assembly; it cannot rescue two assemblies that disagree.

Output Schema

NameRequiredDescription
addedYeshow many features were written — branch on this rather than counting
basisYeswhat earned the apply: 'matched' when both assemblies agreed, 'coordinate-space-only' when you stated it. A run's provenance, not a status
recordYesthe open record with the applied features added
duplicateYeshow many were already on the record at the same span, strand and type, so they were not written twice
outOfRangeYesthe features whose spans run past the end of the record, each with the end it really has. Reported, never trimmed: a span cut to fit is a different feature

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, but the description adds genuinely non-derivable behavior: the coordinate-space gate, the special coordinates_only basis recording, and the fact that it reports non-fitting features instead of trimming. It stops short of describing exactly how the open record is mutated or what the report looks like, 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.

Conciseness4/5

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

Five sentences, front-loaded with the core action and then the refusal rules; each sentence carries substantive information rather than filler. It is slightly dense/long, but no sentence is redundant for a tool with this much gating logic.

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

Completeness5/5

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

An output schema exists so return values needn't be explained, and annotations cover the safety profile. For a 5-parameter tool with nested objects, the description supplies the decisive coordinate-space contract and overflow behavior, leaving nothing an agent needs in order to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description synthesizes the interplay the schema documents piecemeal: file/sequence disambiguation ('with several, this refuses and names them') and the conditional requirement logic for coordinates_only. It clarifies intent (avoid applying the wrong chromosome's intervals) beyond the raw field descriptions.

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

Purpose5/5

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

States a specific verb and resource ('Put the features from a GTF ... onto the open record') and immediately clarifies why the operation is needed ('a GTF carries no sequence, so this is how one reaches a molecule'). An agent can distinguish this from siblings like annotate_region or load_record 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.

Usage Guidelines5/5

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

Gives explicit proceed/refuse conditions: proceeds when both sides name the same genome build, refuses outright when they name different ones, and refuses when either is silent unless coordinates_only is passed. This is an unambiguous when-to-use rule plus the escape hatch, with no reliance on inference.

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

apply_variant_callA
Read-only
Inspect

Substitute one called ALT allele into a sequence and return the edited bases, the range the edit occupies and the length change. The REF allele is checked against the sequence first and a mismatch REFUSES naming both: applying a call from a different assembly would produce a construct that looks fine and is wrong. Symbolic and breakend alleles are refused for what they are: they name a rearrangement rather than replacement bases.

NameRequiredDescriptionDefault
posYesthe POS of the record to apply, 1-based as VCF writes it.
fileNowhich call set the variant comes from, by name. Unset, it is the project's only one.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
contigYesthe contig of the record to apply, as the file names it.
offsetNothe coordinate this sequence's FIRST base has in the call set's contig. Default 1, meaning the sequence starts at the contig's start. A plasmid extracted from a genome sets this to where it was cut from, which is what lets a genomic call be applied to it at all.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceYesthe sequence to edit.
alt_indexNowhich ALT of a multiallelic record to apply, counting from 1 as the file lists them. Default the first.

Output Schema

NameRequiredDescription
deltaYessigned length change, which is what any annotation downstream of the edit must shift by
appliedYesthe record as applied: chrom, pos, ref, the ALT chosen and its index, so a run record says which allele of a multiallelic site was taken
summaryYesthe edit in one sentence, generated from this run
sequenceYesthe sequence with this ALT substituted for the REF, ready to wire into a next step. Every base outside the edited range is unchanged, and the length differs from the input by `delta`, so any coordinate downstream of `edited_start` has moved by that much
edited_endYes0-based INCLUSIVE end of the edited range in the new sequence. Inclusive, not half-open, because it is the end of a selection a reader is meant to see highlighted rather than a slice bound
edited_startYes0-based inclusive start of the range the edit occupies in the NEW sequence, for selecting it

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the read-only annotations, the description discloses important behavior: it returns edited bases, the edit range, and length change; it checks REF and refuses mismatch while naming both alleles; and it refuses symbolic and breakend alleles with reasons. These are valuable failure modes and validation semantics. It does not cover every edge case, but it adds substantial behavioral context beyond the structured annotations.

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

Conciseness5/5

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

The description is three tightly written sentences. It front-loads the operation and return values, then adds the REF validation rule, then the symbolic/breakend refusal. Every sentence carries distinct, useful information with no waste.

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

Completeness4/5

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

Given the output schema and the detailed input schema, the description covers purpose, core behavior, validation, and return values. Safety annotations already cover read-only status. The main gap is that it does not help the agent route between this tool and related siblings, but for calling the tool correctly it is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter schemas already document each field, including offset, alt_index, and _subject. The description adds conceptual context about REF/ALT matching and assembly consistency but does not add parameter-level syntax or meaning beyond the schema. Per the rubric, the baseline is 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb and resource: 'Substitute one called ALT allele into a sequence' and returns the edited bases, edit range, and length change. This is clear enough for an agent to understand the operation. However, it does not explicitly distinguish the tool from related siblings such as read_variant_calls or score_variant_effect, 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.

Usage Guidelines3/5

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

The description gives implied usage conditions: the REF allele must match the sequence, and symbolic or breakend alleles are refused. This tells an agent when the tool is applicable and when it will fail. It does not, however, name alternatives or contrast the tool with sibling tools, so it remains only implied guidance.

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

assemble_index_oligosA
Read-only
Inspect

Turn index sequences into the oligos a synthesiser makes: each index spliced between 5'/3' adapter arms, or onto a PCR primer in either orientation with an optional spacer. Audited for the problems that only exist once tag and oligo are concatenated and that no check of the index alone can see — a homopolymer run across the junction, a 5' tetramer recurring as its reverse complement, and an oligo over the synthesis length guideline.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNoadapter arms around the index, or a tagged PCR primer. Values: adapter (5'/3' adapter arms), primer (Tagged PCR primer).adapter
primerNothe PCR primer the tag is appended to — required when `format` is `primer`.
spacerNobases between the tag and the primer. Heterogeneity/phasing spacers are routine on a low-diversity library. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
barcodesYesthe index sequences to assemble.
adapter_3No3' arm the index is spliced before — the TruSeq read-1 primer, and the panel's own default.ACACTCTTTCCCTACACGACGCTCTTCCGATCT
adapter_5No5' arm the index is spliced after — the Illumina P5, and the panel's own default.AATGATACGGCGACCACCGAGATCTACAC
reverse_complement_tagNouse each tag as its reverse complement, in an adapter or on a primer, as the instrument requires for some read orientations. Advanced.

Output Schema

NameRequiredDescription
countYeshow many oligos were assembled
oligosYeseach assembled oligo with its name, sequence and length
longestYesthe longest assembled oligo, in bases — the number a synthesis quote turns on
warningsYesjunction problems that only exist once tag and oligo are joined: a run across the junction, a self-complementary 5' tetramer, an oligo over the synthesis guideline

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly=true, destructive=false, openWorld=false, so the safety profile is covered. The description adds genuine behavioural context beyond that: it discloses the three junction-level audits (homopolymer across the splice, 5' tetramer recurring as reverse complement, synthesis length overrun), which tells the agent what the output will flag.

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

Conciseness4/5

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

Two sentences, purpose front-loaded, with the audit behaviour following as supporting detail. The second sentence is dense with em-dashes but every clause carries information; no filler or repetition.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and annotations cover safety. The description covers both operating modes and the audit outputs; only the interaction between format=primer and the required primer argument is left to the schema, which handles it explicitly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including the nested _subject and _files is already documented. The description reinforces a few of them (adapter arms, primer, orientation, spacer) but adds no syntax, defaults, or constraints beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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 turns index sequences into synthesised oligos, spliced between adapter arms or onto a PCR primer. It also implicitly separates itself from index-only checks ('no check of the index alone can see'), which distinguishes it from siblings like audit_barcodes, though no sibling is named outright.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: you bring index sequences and get oligos back, with two formats (adapter/primer) described. There is no explicit when-to-use/when-not guidance and no routing to alternatives such as audit_barcodes, check_index_pool, or design_oligo_plate_order, which an agent must infer.

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

assemble_multiple_insertsAInspect

Open ONE circular backbone at several places and place several inserts in a single step. A complete digest at n sites leaves n arcs and n gaps between them, and every gap has to be filled for the ring to close; the arcs and the inserts go to the same homology assembler the single-insert tool uses, and which insert lands in which gap is read off each construct the homology graph closes rather than guessed. It designs no homology arm: an insert arrives with the ends it has, and a set whose ends do not meet the arcs is the assembler's own refusal.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesthe enzymes that open the backbone, by name (1409 in the cloning catalogue). Their sites ARE the insertion points, so two single-cutters give two of them; a name the catalogue does not carry is refused by name rather than ignored.
insertsYesthe fragments to place, one per insertion point — wire upstream `record` outputs here, or name library documents.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
backboneNothe circular vector to open. Leave unset to use the open record.
max_constructsNocap on how many distinct constructs are enumerated. Advanced.
max_homology_bpNolongest terminal homology considered; the bound is EXCLUSIVE, as upstream's own range is. In bp.
min_homology_bpNominimum terminal homology for two ends to join. In bp.

Output Schema

NameRequiredDescription
arcsYesthe backbone's arcs: their lengths and the enzyme that made each end — the insertion points, made readable
recordYesthe first construct, as a record
readingYeswhat was planned, generated from the enumeration rather than the request
cutCountsYessites found per enzyme, so an enzyme that does not cut is named rather than silently absent
placementsYesevery construct the ring closes on, each with the inserts in the order they sit around it
insertionPointsYeshow many gaps the digest left, which is how many inserts the step takes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavior: arcs and inserts are routed to the same homology assembler as the single-insert tool, insert-to-gap assignment is determined by the homology graph rather than guessed, and no homology arms are designed. It also explains the refusal condition when insert ends do not match the arcs.

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

Conciseness5/5

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

The description is front-loaded with the core action and remains compact for a complex operation. Each sentence contributes either mechanism, routing behavior, or a failure condition, with no redundant restatement.

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

Completeness5/5

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

Given the presence of annotations, a complete input schema, and an output schema, the description provides enough mechanism and constraint information for correct invocation. It does not need to explain return values or repeat parameter documentation.

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

Parameters3/5

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

Schema coverage is 100%, so the parameter descriptions already carry the main semantics. The description adds conceptual context about multi-site assembly and automatic insert assignment, but it does not add parameter-specific detail beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb and resource: open one circular backbone at several sites and place several inserts in one step. It explicitly contrasts the approach with the single-insert tool, so an agent can distinguish it from related assembly tools.

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

Usage Guidelines4/5

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

It clearly frames the relevant scenario: a complete digest at multiple sites creates matching arcs and gaps that must be filled by the inserts. It also states a key constraint, namely that insert ends must meet the arcs or the assembler will refuse, but it does not explicitly enumerate when to choose this over named alternatives.

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

assemble_operonAInspect

Stack several CDSs into one contiguous operon, designing a fresh ribosome-binding site in front of each one AGAINST ITS REAL UPSTREAM CONTEXT — which is why the RBS for gene 2 is not the RBS design_rbs would give it in isolation. Returns the assembled sequence, its layout, and each gene's achieved strength.

NameRequiredDescriptionDefault
cdsYesthe coding sequences to stack, in order — wire upstream `record` outputs here, or name library documents.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
leaderNoleader placed before the FIRST ribosome-binding site (defaults to the design leader). Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
promoterNopromoter sequence to place in front of the operon (optional). Advanced.
terminatorNoterminator sequence to place after the last gene (optional). Advanced.
include_subjectNoput the node's subject first, as the first gene.
target_strengthNorelative initiation strength to aim for at every gene, on the model's own scale — 1 is as strong as its reference site. Overridden per gene by `target_strengths`.
target_strengthsNoper-gene target strengths, aligned to `cds` — the Operon panel gives every row its own, and a run through this door could not say the same thing. Shorter than `cds` falls back to `target_strength` for the rest. Advanced.

Output Schema

NameRequiredDescription
genesYesper gene: the RBS designed for it, its spacing, the strength achieved and whether it hit the target
layoutYesevery element in order — promoter, each RBS, each CDS, terminator — with its start and end
recordYesthe assembled operon as a record
onTargetYestrue when EVERY gene reached its target strength — the number to check before ordering
sequenceYesthe assembled operon sequence

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is known. The description adds meaningful behavioral context: RBSs are designed against real upstream context, and the output includes sequence, layout, and per-gene achieved strength.

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

Conciseness5/5

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

Two tightly written sentences front-load the core action and the key distinction from design_rbs. The parenthetical em-dash clause earns its place by explaining the context-aware design behavior, and there is no filler.

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

Completeness5/5

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

With 100% schema coverage, an output schema, and annotations covering safety, the description provides sufficient high-level purpose, behavior, and sibling differentiation. It does not need to restate parameter details or return values.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds conceptual framing around RBS context and target strength but does not provide additional syntax, defaults, or constraints beyond what the schema states.

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

Purpose5/5

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

The description states a specific verb ('Stack'), resource ('several CDSs into one contiguous operon'), and key differentiator (context-aware RBS design). It distinguishes this from design_rbs by explicitly noting that the RBS for gene 2 is not the isolated RBS design_rbs would produce.

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

Usage Guidelines4/5

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

It clearly implies when to use this tool versus design_rbs by contrasting context-aware operon assembly with isolated RBS design. However, it does not explicitly state when-not to use it or name other assembly alternatives like golden_gate_assemble or gibson_assemble.

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

assembly_plan_simulateAInspect

Run a MULTI-LEVEL assembly plan (DnaCauldron AssemblyPlan): several assemblies arranged into dependency levels, where each level's products become parts for the next. Emits the FINAL construct as a record. The plan is DnaCauldron's own spreadsheet shape — one row per construct, construct_name, part, part, ….

NameRequiredDescriptionDefault
planYesthe plan, in DnaCauldron's spreadsheet shape: one line per construct, `name,partA,partB`. A construct name may itself be used as a part in a later line — that is what makes the plan multi-level.
partsNothe physical parts — wire upstream `record` outputs here, or list library document names/ids. A part is addressed by this NAME in the plan rows.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
methodNothe assembly chemistry every step uses (upstream passes one class per spreadsheet). Values: type2s (Golden Gate (Type-IIS)), gibson (Gibson / homologous), biobrick (BioBrick standard), basic (BASIC (linker-based)), lcr (Ligase cycling reaction), annealing (Oligo pair annealing).biobrick
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
include_subjectNoalso offer the node's subject as a part.

Output Schema

NameRequiredDescription
builtYessteps that produced a construct
failedYessteps that errored
levelsYesthe derived build order: which steps happen at which level
recordYesthe final construct (deepest level), as a record
cancelledYessteps never attempted because a dependency failed
leafPartsYesthe physical parts a bench user must actually have
constructsYesevery construct produced, in build order

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already disclose readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered externally. The description usefully adds that the plan is DnaCauldron's spreadsheet shape and that it 'Emits the FINAL construct as a record', which clarifies the write behavior, but it says nothing about failure modes, partial simulation results, or side effects on library documents. Adequate with annotations in place.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action, then the multi-level mechanic, then the input shape. No filler. Slightly redundant with the schema's own description of the plan format, but tight overall.

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

Completeness4/5

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

Output schema exists, so return values need not be explained, and the 100%-covered schema handles parameters. The description supplies the conceptual model (dependency levels, products-feed-next-level) that an agent needs to invoke it correctly. Missing only explicit routing against single-level assembler siblings.

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

Parameters3/5

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

Schema description coverage is 100%, including a detailed description of `plan` and `parts`, so the schema already carries parameter meaning. The description's restatement of the spreadsheet shape (`construct_name, part, part, …`) largely duplicates the schema, adding little beyond it. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Run a MULTI-LEVEL assembly plan') and names the underlying object (DnaCauldron `AssemblyPlan`). The 'multi-level / dependency levels / level's products become parts for the next' framing cleanly separates it from single-step siblings like gibson_assemble, golden_gate_assemble and assemble_operon.

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

Usage Guidelines3/5

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

The multi-level dependency description implies the scenario this tool is for, but there is no explicit when-to-use / when-not-to-use statement and no sibling named as an alternative. An agent can infer usage from the 'several assemblies arranged into dependency levels' wording, but must do the routing itself.

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

assess_small_moleculeA
Read-only
Inspect

Assess a small molecule given as SMILES or a molfile: RDKit's descriptors, medchem's drug-likeness rules (Lipinski, Veber, Ghose, Egan, REOS, rule of three, CNS and more) and the papers' own readings where medchem departs from them, with every bound and this molecule's value, a structural-alert screen (PAINS, Brenk, NIH, ZINC and ChEMBL's seven curated sets) with the matched atoms, the molecular formula with its masses and natural-abundance isotope pattern, QED drug-likeness under all three weightings, ESOL aqueous solubility, synthetic accessibility and natural-product likeness, the Bemis–Murcko scaffold and generic framework, the BOILED-Egg's gut-absorption and brain-penetration verdicts, and per-atom logP, polar-surface and charge contributions. Readings are taken with hydrogens implicit, the form the descriptors and the rules' papers assume. An alert flags a nuisance or reactive substructure; it is not a verdict on activity or toxicity.

NameRequiredDescriptionDefault
rulesNowhich drug-likeness rules to evaluate, by id: medchem's 17, plus the papers' own readings of Lipinski, Ghose and REOS (ids ending _paper). Every rule by default.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculeYesthe structure: a SMILES string or an MDL molfile (V2000 or V3000). One molecule; for an SDF, pass one record.
alert_setsNowhich structural-alert catalogs to screen against. Empty screens nothing, which is not a clean result.

Output Schema

NameRequiredDescription
qedYesQED (Bickerton 2012) with mean weights, maximum weights and unweighted; the eight inputs (MW average mass, ALOGP Crippen, HBA, HBD, PSA, ROTB, AROM, ALERTS) and each input's desirability; and the SMARTS of every unwanted group QED counted
rulesYesone entry per rule evaluated: id, label, passes, citation, and every clause with its property, bound and this molecule’s value. A rule with anyClauses passes when at least one of those holds
alertsYesevery alert matched: its set, name, SMARTS and the atom indices of the first match, numbered on the implicit-hydrogen molecule
formulaYesRDKit's molecular formula (every hydrogen, isotope labels merged, charge suffixed) with its element counts and charge, the monoisotopic and average masses in Da, and OpenMS's coarse natural-abundance isotope envelope (isotope index, mass, share of molecules), or the reason there is none (an isotope-labeled structure, or an element OpenMS has no isotope data for)
summaryYesthe assessment in one sentence, generated from this run
scaffoldYesthe Bemis–Murcko scaffold (ring systems and linkers, side chains removed) as canonical SMILES, empty for a molecule with no ring; the generic framework (every atom carbon, every bond single), null where an atom has more bonds than carbon allows; and the indices of the atoms the scaffold keeps, on the implicit-hydrogen molecule
structureYesthe 2D structure every reading was taken on, drawn by RDKit with implicit hydrogens as the chemistry tab opens it
boiled_eggYesthe BOILED-Egg placement (Daina & Zoete 2016) of the neutral, unsalted ChEMBL parent as the paper places it (`placed` says whether that is the parent or, when the pipeline refuses one or it is the molecule itself, the record as drawn; `asDrawn` and `parent` carry both): tPSA counting S and P, RDKit's Crippen logP standing in for WLOGP, and for the gut-absorption (hia) and brain-penetration (bbb) ellipses whether the point is inside, its summed focal distance and the ellipse's major axis; region is yolk, white or outside
solubilityYesESOL (Delaney 2004) log S in mol/L under two coefficient sets, rdkitRefit (Walters' refit to RDKit descriptors) and delaney2004 (the paper's, with Crippen logP for Daylight CLOGP), and the four inputs: Crippen logP, average mass, rotatable bonds, aromatic proportion
descriptorsYesRDKit's descriptors under RDKit's own keys (exactmw, CrippenClogP, tpsa, NumHBD …)
np_likenessYesErtl et al. 2008 natural-product likeness, about -5 (synthetic-like) to 5 (natural-product-like), and the confidence: the share of the molecule's fragments the model knows
canonical_smilesYesRDKit's canonical SMILES of the molecule every reading was taken on
atom_contributionsYesper-atom weights on the implicit-hydrogen molecule: logp (Crippen, heavy atoms), tpsa (Ertl, N and O), tpsaSP (Ertl with S and P) and charge (Gasteiger–Marsili; not a number around an element RDKit has no parameters for)
bioavailability_radarYesSwissADME's Bioavailability Radar (Daina 2017): six axes (lipo, size, polar, insolu, insatu, flex) with this molecule's value, the inclusive window, whether it is inside, and drugLike when all six are; read with Crippen logP for XLOGP3 and the XLOGP3 window's figure bound of 5.0
synthetic_accessibilityYesErtl & Schuffenhauer 2009 synthetic accessibility, 1 (easy) to 10 (hard), with its fragment score, complexity penalty, symmetry correction, the counts they read and how many fragments the table did not know; null only if the fragment table could not be loaded

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, so the safety profile is covered; the description adds real behavioral context beyond them — readings are taken with hydrogens implicit, and structural alerts flag nuisance/reactive substructures rather than activity or toxicity. It does not mention cost, runtime, or failure behavior for invalid structures, which keeps it short of 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.

Conciseness3/5

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

The verb and resource are front-loaded, which is good, but the first sentence is an extremely long enumeration that largely restates the output schema. The two trailing sentences (hydrogen-implicit convention, alert-vs-toxicity caveat) are the highest-value lines and carry disproportionate weight.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and it covers the input assumption (one molecule, implicit hydrogens) and a key interpretive caveat. What remains thin is guidance on single-molecule assessment versus comparison/screening workflows, the one thing an agent still has to guess.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents rules, alert_sets, _subject and _files. The description only reinforces the molecule input format (SMILES or molfile) and the hydrogen-implicit assumption; it adds nothing about the semantics of selecting rule ids or empty alert_sets beyond what the schema states.

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

Purpose4/5

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

States a specific verb and resource ('Assess a small molecule given as SMILES or a molfile') and then enumerates the computed outputs (descriptors, drug-likeness rules, structural alerts, QED, ESOL, SAS, scaffold, BOILED-Egg, per-atom contributions), which makes its scope unmistakable. It never names a sibling, so an agent must infer that this is single-molecule characterization rather than comparison or library screening.

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

Usage Guidelines3/5

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

Usage is only implied by the breadth of the described report; there is no explicit 'use this when…' statement and no pointer to siblings such as compare_molecules, screen_molecule_library or cluster_molecules. The closing note that an alert is not a verdict on activity or toxicity is useful interpretation guidance, but it is about reading results, not about when to select the tool.

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

audit_barcodesA
Read-only
Inspect

Check an index set you ALREADY have, rather than designing a new one: the minimum distance between any two, how many errors that guarantees correcting, the full distance matrices, and — optionally — the subset that survives pruning to a stricter error budget. This is the question asked of a set inherited from a kit or a previous experiment.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
metricNoerror model to audit against — a set safe under substitutions may be unsafe under indels. Values: hamming (Hamming (substitutions)), seqlev (Sequence-Levenshtein (indels)), levenshtein (Levenshtein).seqlev
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
barcodesYesthe index sequences to audit.
prune_to_errorsNoalso report the subset that would survive pruning to a free code correcting this many errors. 0 = do not prune. Advanced.
required_distanceNothe minimum distance the set is supposed to have — the audit says whether it does.

Output Schema

NameRequiredDescription
keptYesthe barcodes surviving `prune_to_errors` (the whole set when pruning is off)
auditYesthe verdict: the set's real minimum distance, what it guarantees, and every pair that falls short
droppedYeshow many the prune removed
analysisYesper-metric analysis of the whole set
matricesYesthe pairwise distance matrix under each metric
statisticsYesthe whole-set statistics the four charts above are drawn from, which a min-distance figure hides: GC mean, spread and range, Shannon entropy per cycle, the fraction reading each base at each cycle, groups sharing a prefix in the first cycles read, duplicates, and the per-metric distance distributions
distanceMapYesthe pairwise distance matrix under the chosen metric, as a heatmap
gcHistogramYeshow many barcodes sit at each GC percentage
baseCompositionYesthe fraction of the set reading each base at each cycle
distanceHistogramYeshow many PAIRS sit at each distance under the chosen metric: the shape behind the minimum
neighbourHistogramYeshow many BARCODES have each nearest-neighbour distance: where the weak links are

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare this as a non-destructive, closed-world read-only operation, so the safety profile is clear. The description adds meaningful behavioral context: it reports minimum pairwise distance, guaranteed error correction, full distance matrices, and optionally the surviving subset after pruning. It does not discuss performance or computational cost, but that is not essential for this read-only audit.

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

Conciseness5/5

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

The description is two sentences and front-loads the key distinction: check an existing set rather than design a new one. Every clause adds useful information about the audit outputs or the optional pruning behavior, with no filler.

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

Completeness5/5

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

Given the presence of an output schema, the description does not need to enumerate return fields, and it still summarizes the main outputs. It also provides the key usage context and distinguishes the tool from its design siblings. Nothing critical is missing for an agent to decide when and how to call it.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already explains barcodes, metric, required_distance, prune_to_errors, _subject, and _files in detail. The description adds conceptual framing around auditing an inherited set and pruning to a stricter error budget, but it does not map those ideas to specific parameter names or add syntax beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description uses a specific verb, 'Check,' applied to a clearly defined resource: an existing index set. It immediately distinguishes the task from designing a new set by naming the alternative and explaining that this is for sets inherited from kits or previous experiments. The listed outputs (minimum distance, error correction, distance matrices, pruning subset) make the purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly says to use this tool when you already have an index set rather than designing a new one, which routes the agent away from design_barcodes/design_free_codes. The inherited-kit/previous-experiment framing gives a concrete usage context. No important when-not guidance is missing.

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

audit_cds_annotationsA
Read-only
Inspect

Check every annotated CDS of one or more GenBank maps against its own bases and genetic code: a frame that does not close (frameshift), a stop inside the reading frame, a first codon the code cannot start with, a last codon that is not a stop, and a /translation the bases do not give. A partial end (< or >) is not judged, and a /pseudo CDS carries no flag. Where an annotation ends without a stop it reads on in frame (round the origin of a circular map) to the first stop and says how many codons that adds, whether it runs into another annotated CDS (a fusion annotated in pieces) and the read-through a random backbone of the same composition would give. Extraction and translation match Biopython on all 1,871 CDS of 695 NCBI vector records.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
genbankYesthe GenBank files' contents, one string per file (a file may hold several records).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
flagsYesper flag, how many CDS carry it and in how many records
resultYesthe full result
flaggedYesevery CDS with a flag: record, feature, label, location and the flags
readThroughYesevery annotation that ends without a stop, with where reading on stops

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, but the description goes well beyond safety: it discloses what is exempt from judging (partial ends, /pseudo CDS), the read-through extension behavior round a circular origin, whether an overrun hits another annotated CDS (fusion), and the fold-over-random-backbone comparison. This is unusually rich behavioral context.

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

Conciseness4/5

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

The description is front-loaded with the core check list and then the exceptions and read-through behavior. It is dense but nearly every clause adds information; a minor cost is its length and the trailing Biopython-parity validation claim, which is more marketing than actionable specification.

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

Completeness5/5

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

With an output schema present, return values need not be described, and annotations cover the safety profile. The description supplies the check semantics, exemptions, and read-through reporting that an agent needs to invoke this correctly, so nothing essential is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully documents genbank, _files and _subject. The description adds only the conceptual framing 'one or more GenBank maps' and does not clarify otherwise-undocumented parameter semantics, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb (audit/check) and resource (annotated CDS of GenBank maps) and enumerates the exact faults it detects: frame that does not close, internal stop, invalid start codon, missing terminal stop, translation mismatch. This clearly distinguishes it from siblings like find_orfs, auto_annotate, and discover_annotation_contradictions.

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

Usage Guidelines3/5

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

Usage is implied by the audit framing and the exclusions (partial ends not judged, /pseudo CDS carries no flag), which help an agent know what the tool will and will not act on. However, there is no explicit 'use this when' guidance or naming of alternative tools (e.g. find_orfs, discover_annotation_contradictions), so the agent must infer when to prefer this over siblings.

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

auto_annotateAInspect

Find and name known features on the subject — vector parts, origins, resistance markers and tags — by exact match, by local alignment (which finds a diverged copy and reports the identity and coverage that earned it), or by both, on either strand and across the origin, plus Cre/loxP and Gateway att recognition sites. Emits an annotated record, so a downstream map or export carries the annotations.

NameRequiredDescriptionDefault
modeNohow to match a library entry: "exact" finds only a sequence spelled byte for byte, "alignment" finds a diverged copy and reports its identity and coverage, "both" runs each and keeps what only the other found.both
lox_pNodetect Cre/loxP-family recognition sites.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
policyNowhat the emitted record does with the features it already had: `merge` keeps them all and skips a hit already there to the base, `overwrite` replaces a same-strand feature a hit overlaps, `clear` drops every existing feature first.merge
gatewayNodetect Gateway att recombination sites.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
librariesNowhich feature corpora to search, by id (an id from annotation-library/manifest.json, or "legacy" for the unsourced set). Empty means the ones the panel starts with, which is every corpus but the two it leaves off for their size, AMRFinderPlus and Rfam; name those to search them too.
max_expectNoprotein corpora only: the E-value a translated (six-frame) match must beat to be reported. It also sets the score the search runs at, so a stricter cutoff is a faster scan. Advanced.
alternativesNoprotein corpora only: how many runners-up to keep on each call, so a near relative is reported rather than implied. Advanced.
genetic_codeNoprotein corpora only: the NCBI translation table the six frames are read under. 1 is the standard code. Advanced.
min_coverageNoprotein corpora only: drop a translated call covering less than this much of the database protein's own length. Advanced.
min_identityNoprotein corpora only: drop a translated call under this percent identity over the residues aligned. Advanced.
accepted_onlyNokeep only hits clearing the corpus authority's own acceptance policy (>=95% identity, with a coverage bar that depends on the feature's length). Also decides overlaps: a hit the authority would reject cannot displace one it would accept. Only applies when mode is alignment or both. Advanced.
greedy_gatewayNopermissive att core matching — finds more sites, including partial ones. Only applies when gateway is true. Advanced.
hide_fragmentsNohide hits covering under 95% of their database entry, which upstream calls fragments. Only applies when mode is alignment or both. Advanced.
min_pi_per_matchNolowest identity-weighted coverage worth reporting; upstream's own floor is 3, below which a hit is a fragment of a composite feature rather than the feature. Only applies when mode is alignment or both. Advanced.

Output Schema

NameRequiredDescription
recordYesthe subject with the found features added
featuresYesevery feature found, with its source detector
perSourceYeshit count per detector
featureCountYeshow many features were found

TDQS

A4/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds the essential behavioural fact that this is a writer ('Emits an annotated record') whose output is consumed downstream by a map or export. It stops short of describing what happens to pre-existing features beyond pointing at the emitted record, but the mutation semantics are made explicit rather than left to the hint.

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

Conciseness5/5

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

Two sentences, both load-bearing: the first scopes what is found and how, the second states the output effect. The long first sentence is dense but front-loaded with the core action rather than preamble.

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

Completeness4/5

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

With 16 parameters, a nested _subject object and an output schema, the description only needs to carry purpose plus the mutation semantics, and it does both. It leaves the mode/policy/filter interplay entirely to the schema, which is acceptable here, and nothing an agent needs to call it is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so mode, policy, libraries and every protein-corpus knob are already documented in the schema. The description restates the exact/alignment/both distinction but adds no syntax, defaults or interaction detail beyond what the schema carries — baseline 3 applies.

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

Purpose5/5

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

Names a specific verb and resource ('Find and name known features on the subject') and enumerates the exact feature classes it recognises — vector parts, origins, resistance markers, tags, Cre/loxP and Gateway att sites. The three matching strategies and the either-strand/across-origin scope separate it cleanly from siblings like scan_motif_sites, find_orfs or annotate_region 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.

Usage Guidelines3/5

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

The description implies usage context through the feature classes and the exact/alignment/both modes, but never states when to reach for this tool versus a sibling such as annotate_region or find_restriction_sites, and gives no exclusions or prerequisites. An agent can infer the fit but must reason it out.

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

back_translateA
Read-only
Inspect

Protein → DNA: the coding sequence that would encode a protein, weighted by a real codon-usage table. Four rules — the host's most-frequent codon (EMBOSS backtranseq), a draw from the family's real frequency distribution, the IUPAC-degenerate consensus for primers/probes (EMBOSS backtranambig), or DnaChisel's table-free first codon. It does NOT optimize: for restriction-site avoidance, a GC target or repeat removal, follow it with optimize_sequence.

NameRequiredDescriptionDefault
hostNocodon-usage table to weight by, named as the workbench knows it. Required for the two table-driven strategies and ignored by the other two. Tables loaded in the Back-translate or Optimizer panel this session are valid names as well as the bundled ones. Only applies when strategy is mostFrequent or weightedRandom.E. coli K-12
seedNoseed for the usage-weighted draw, which makes a sampled design reproducible. Omit for an unseeded draw; ignored by the three deterministic rules. Only applies when strategy is weightedRandom.
tableNogenetic code the codons are chosen under.Standard
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
proteinYesthe protein sequence, one-letter codes (B/Z/J/U/O/X and gaps are handled and reported); wire it from translate_sequence.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
strategyNomostFrequent — EMBOSS backtranseq, and SnapGene's “Preferred Codons”: every residue takes its host's single most-used codon. | weightedRandom — Each residue is drawn from its family's real frequency distribution: a natural-looking gene rather than a run of one codon. | ambiguous — EMBOSS backtranambig: one ambiguity-coded codon covering EVERY codon for the residue. The degenerate-primer answer; needs no usage table. | firstCodon — DnaChisel's reverse_translate. Deterministic and table-free, but it is not a biological preference: use it only to reproduce a DnaChisel result.mostFrequent
append_stopNoappend a stop codon, chosen by the same strategy and table as every other codon. Skipped when the residues already end in *.

Output Schema

NameRequiredDescription
gcYesGC fraction of the product (0–1), over unambiguous bases only
dnaYesthe coding sequence — wire it into optimize_sequence, or open it as a record
cautionsYesonly the caveats THIS product earned, each with its measurement and whose published limit it crossed — an empty list is the healthy case and is not padded
residuesYesevery residue with the codon chosen, its share of its synonymous family, and why if it took a special path
conclusionYesone generated sentence saying what this product IS — size, GC, and how adapted it is to the table you named. Built from the run by the same `conclusionOf` the panel headlines, so a turn and the panel cannot state different things about one design
provenanceYesthe assumptions the answer rests on: strategy, genetic code, codon-usage table and residue count — the same facts the panel prints under the product
undefinedResiduesYesresidues the genetic code has no codon for; each became NNN
unweightedResiduesYesresidues whose synonymous family carried NO weight in this table, so codon order decided the answer rather than usage — empty is the healthy case

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so this is a safe, non-mutating computation. The description adds real behavioral context beyond that: it is table-weighted, it does not optimize, and it must be followed by optimize_sequence for gene-design objectives, plus each strategy's algorithmic basis.

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

Conciseness4/5

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

Front-loads the core mapping and the non-optimization caveat, with no filler. Slightly redundant because the strategy enumeration largely duplicates the rich strategy enum descriptions in the schema.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description covers the strategy space, the non-optimization boundary and the follow-up tool. An agent has enough to call it correctly, though the host/table interaction is left to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the schema already documents host, seed, table and strategy at length. The description largely restates the four strategies rather than adding format or interaction detail the schema lacks (e.g. how host interacts with table).

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

Purpose5/5

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

States a specific verb and resource direction ('Protein → DNA: the coding sequence that would encode a protein') and immediately names the four strategies that define the tool's scope. It is clearly distinguishable from siblings like optimize_sequence or translate_sequence.

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

Usage Guidelines4/5

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

Adds a strong negative boundary ('It does NOT optimize: for restriction-site avoidance, a GC target or repeat removal, follow it with optimize_sequence'), which routes the agent to the right next tool. It lacks an explicit positive 'use this when' sentence, but the strategy breakdown implies the use cases well.

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

bayesian_protein_inferenceA
Read-only
Inspect

Bayesian protein inference, Epifany (validated against OpenMS BayesianProteinInferenceAlgorithm on PXD000001): the posterior probability that each protein, each indistinguishable group and each peptide-spectrum match is present, from the matches' posterior error probabilities under a network in which present proteins emit their peptides. Shared peptides are weighed between their proteins instead of being counted for each.

NameRequiredDescriptionDefault
betaNospurious emission probability β: the chance a peptide is reported with none of its proteins present.
psmsYesthe matches as a table with a header row naming spectrum, peptide, charge and a posterior error probability column (tab- or comma-separated); peptides are ProForma.
alphaNopeptide emission probability α: the chance a present protein yields a given one of its peptides.
gammaNoprotein prior γ: the chance a protein is present before any evidence.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
databaseYesthe protein database searched, as FASTA; the accession is the header up to the first space.
psmCutoffNodrop matches whose probability (1 − PEP) is below this.
gridSearchNochoose α, β and γ instead: run OpenMS's grid (α 0.1–0.8 × β 0.01–0.4 × γ 0.2–0.7) and keep the combination whose protein posteriors best agree with target-decoy FDR and separate targets from decoys; needs decoy proteins.
decoyPrefixNoaccession prefix marking a decoy protein, for the grid search.DECOY_
scoreColumnNothe column holding each match's posterior error probability (PEP, 0 to 1).pep
ilEquivalentNotreat isoleucine and leucine (and a database J) as the same residue when mapping peptides.
peptidePriorNopeptide prior π, dividing each match's probability back out of its evidence.
appendReversedDecoysNoadd the reversed sequence of every database protein as a decoy (accession decoyPrefix + accession), for a database searched with reversed decoys that holds only targets.
maxAmbiguousResiduesNohow many ambiguous database residues (B, J, Z, X) one peptide match may resolve.

Output Schema

NameRequiredDescription
gridYeswith the grid search: every α, β, γ tried, with its FDR-curve difference, ROC-100 and objective (skipped when improbable)
countYesproteins reported
groupsYesindistinguishable protein groups, most probable first: probability that at least one member is present, and accessions
proteinsYesone row per protein: accession, posterior probability, matches counted, sequence coverage (%)
psmPosteriorsYesthe matches inference used (the best per peptide): spectrum, peptide, prior (1 − PEP) and posterior

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the operation read-only, non-destructive, and not open-world. The description adds substantive behavioral context: it explains the probabilistic network model, how shared peptides are weighted, and that output consists of posterior probabilities. It does not discuss computational cost or caveats, but it goes well beyond 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.

Conciseness4/5

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

The description is two dense sentences, front-loading the method and the output quantity before explaining the shared-peptide treatment. The parenthetical validation detail is useful but slightly expendable; overall it is efficient and well-structured.

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

Completeness4/5

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

Given an output schema exists, the description need not explain return values. It also benefits from complete schema coverage for the 15 parameters, which covers required inputs and defaults. The description supplies the conceptual model but could more explicitly point to required inputs like psms and database, though the schema handles that adequately.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 15 parameters, including the roles of alpha, beta, gamma, and gridSearch. The tool description adds no further parameter-specific semantics beyond what is already in the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a specific method and output: Bayesian protein inference using Epifany, yielding posterior probabilities for proteins, indistinguishable groups, and peptide-spectrum matches. However, it does not explicitly distinguish this tool from the sibling infer_proteins, so an agent must infer the distinction from the method name.

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

Usage Guidelines3/5

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

Use is implied by the Bayesian inference framing and the parameter details for grid search, but the description never states when to choose this over alternatives such as infer_proteins. There is no explicit when-to-use or when-not-to-use guidance.

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

blast_project_sequencesA
Read-only
Inspect

Search a sequence against THIS PROJECT'S OWN records with blastn or blastp, on this machine: the local database is built from every project record of the program's alphabet, and every E-value is computed from that database's own size. Use it to ask which of my constructs, reads or proteins carry this span. Nothing leaves the machine; for public databases use blast_search.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
regionNowhich part of the open record to search, when no sequence is wired in. Values: whole (the whole record), selection (the current selection), feature (a named feature).whole
featureNothe feature's name, matched case-insensitively on the open record. Only applies when region is feature.
programNoblastn searches the nucleotide records, blastp the protein records. Values: blastn (blastn · nucleotide query), blastp (blastp · protein query).blastn
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe query. Wire a record or a sequence output, or paste raw/FASTA. Left empty, the region below is taken from the open record.
maxExpectNoE-value cutoff (BLAST+'s -evalue); hits above it are not reported.

Output Schema

NameRequiredDescription
hitsYesevery hit, with its HSPs, accession, organism and the links the service sent
topHitYesthe best hit by E-value: what a "what is this?" step reads
tabularYesthe hits as BLAST's own outfmt 6 table, for download or a downstream parser
hitCountYeshow many subjects matched
sequencesYesthe hit subjects as FASTA, ready to wire straight into an alignment or a tree
topExpectYesthe best hit's E-value; wire into a $when to branch on significance
provenanceYesthe binary, the command line EBI ran, the databases as built, and the search space the E-values are relative to
topCoverageYeswhat fraction of the query the best hit covers, 0–1
topIdentityYespercent identity of the best hit's best HSP

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description still adds real substance: the database is built from every project record of the program's alphabet, so E-values are computed against that local database size, and nothing leaves the machine. That statistical caveat is exactly the kind of context annotations cannot convey, though return shape is left entirely to the output schema.

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

Conciseness5/5

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

Three sentences, front-loaded with the verb and the scope, then the use case, then the alternative. No filler and nothing repeated from structured fields.

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

Completeness5/5

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

For a 7-parameter nested tool with an output schema, the description covers the things an agent cannot infer: local-vs-public routing, what populates the local database, and how E-values are affected. Return values are correctly left to the output schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes further by explaining that the program choice determines which records form the database ('of the program's alphabet'), tying blastn/blastp to search behavior rather than just declaring an enum, and it clarifies the fallback to the open record's region when no query sequence is wired in.

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

Purpose5/5

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

States a specific verb (search) plus the exact resource and scope: this project's own records, on this machine, with blastn or blastp. It explicitly contrasts itself with blast_search, so an agent can pick it over that sibling 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.

Usage Guidelines5/5

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

Gives a concrete use case ('ask which of my constructs, reads or proteins carry this span') and an explicit exclusion plus alternative ('for public databases use blast_search'). The when-not condition is stated, not inferred.

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

bootstrap_cqA
Read-only
Inspect

Resampling error bars on ONE reaction's Cq. A Cq is read off a fitted model, so its uncertainty is how tightly the observations pin that model down - which propagating a measured spread cannot answer. This refits the curve a few hundred times, either by resampling its residuals or by leaving observations out, and reports the spread of everything the fit produces: every model coefficient, the Cq under each definition, the efficiency and the initial fluorescence, each with the quantiles of the iterations rather than a normal approximation, so an asymmetric interval means the estimate genuinely is asymmetric. Reproduces qpcR 1.4.2's pcrboot.

NameRequiredDescriptionDefault
dropNojackknife only: observations left out of each refit. 1 is the delete-one jackknife; more is a delete-d jackknife, which is less sensitive to a single influential cycle. Only applies when scheme is jack.
seedNoR's `set.seed` value, so the interval is reproducible and citable. Advanced.
modelNothe sigmoid fitted once and REFITTED on every iteration. It is not re-chosen per resample: Cqs fitted under different models are not comparable, so a mixture over models would make the quantiles mean nothing. Values: l4 (l4 · 4-param log-logistic), l5 (l5 · + asymmetry), l6 (l6 · + linear baseline drift), l7 (l7 · + quadratic baseline), b4 (b4 · 4-param logistic (raw scale)), b5 (b5 · + asymmetry), b6 (b6 · + linear baseline drift), b7 (b7 · + quadratic baseline).l4
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
curvesYesthe amplification table: a header row, first column the cycle number and every other column one reaction's fluorescence. The same parser `call_cq` and the Curve->Cq tab use.
schemeNo`boot` resamples the fit's residuals (upstream's default); `jack` leaves observations out. The bootstrap answers "how would this Cq move under the same noise?", the jackknife "how much does any single cycle carry it?".boot
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
reactionNowhich reaction to resample, by its column name. Blank takes the first column — this is a per-reaction run by design, because at the default 200 iterations a 47-reaction plate would be 9,400 refits nobody asked for.
cq_methodNowhich Cq definition the resampled efficiency readouts report. Values: cpD2 (cpD2 · second-derivative max), cpD1 (cpD1 · first-derivative max), maxE (maxE · cycle of maximum efficiency), expR (expR · exponential region), Cy0 (Cy0 · tangent x-intercept (Guescini)), CQ (CQ · 20 % of the Cq fluorescence), maxRatio (maxRatio · spline, model-free (Shain)).cpD2
conf_levelNothe level the reported bounds are read at — 0.95 puts them at the 2.5 % and 97.5 % quantiles of the iterations.
iterationsNoeach iteration is a full nonlinear refit, so this is the run's whole cost. 100 is upstream's default and puts a 95 % bound on a single order statistic, which is why both doors open on 200.
include_readoutsNoalso resample every efficiency readout — the Cq definitions, the efficiency, the initial fluorescence — not just the model coefficients. On, because an interval on the Cq is the point; off is faster and returns coefficients alone. Advanced.

Output Schema

NameRequiredDescription
rssYesresidual sum of squares across the iterations
rmseYesresidual standard error across the iterations
modelYesthe model refitted on every iteration
reactionYesthe reaction actually resampled, named — "the first column" is not a citation
readoutsYesone row per resampled readout — Cq under each definition, efficiency, initial fluorescence — with mean, SD, median and the interval quantiles. Empty when `include_readouts` is off
confLevelYesthe level the bounds above are read at
convergedYesiterations whose refit converged — the ONLY ones any number here is computed from. Well below `iterations` is a finding about the curve, not a warning to swallow
iterationsYesiterations requested
coefficientsYesone row per model coefficient, in the model's own parameter order, same fields

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already carry the safe-read profile (readOnlyHint/destructiveHint false, openWorldHint false), and the description adds substantial behavior beyond that: it refits a few hundred times, iterations is the run's whole cost, and per-reaction design avoids 9,400 refits. It also explains that a fixed model is refit per iteration so Cqs stay comparable.

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

Conciseness4/5

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

Front-loaded with the core purpose and the differentiator against error propagation, and every sentence is substantive. It is dense and somewhat long, with a couple of explanatory clauses that could be trimmed, but nothing is padding.

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

Completeness5/5

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

With an output schema present, return values need no prose. The description covers method, scheme choice, model-refit semantics, cost, and the upstream provenance (qpcR 1.4.2 pcrboot), leaving nothing an agent needs to call it correctly unstated.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds conceptual meaning: why iterations maps to cost and quantile resolution, what boot vs jack actually resample, and the rationale for include_readouts being on. Most of this is echoed in the schema descriptions, so it adds value but not a full dimension above.

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

Purpose5/5

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

States a specific verb and resource ('Resampling error bars on ONE reaction's Cq') and immediately scopes the statistical problem it solves ('how tightly the observations pin that model down'). An agent can distinguish this from call_cq (which just reads off a Cq) and propagate_uncertainty 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.

Usage Guidelines4/5

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

Gives clear context (per-reaction by design, boot vs jack semantics, when each scheme answers a different question) and implicitly rules out error-bar approaches that propagate a measured spread. It lacks an explicit named alternative or a 'do not use this for X' exclusion, 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.

browse_regionA
Read-only
Inspect

Read one window of a genome the way a genome browser shows it: the cytogenetic bands it spans, the transcripts in the chosen RefSeq set, which residues of each protein the window encodes (translated from the assembly’s own bases), how many dbSNP 155 variants fall in it and how many ClinVar calls pathogenic, and every CRISPR site for the chosen nuclease (SpCas9 unless told otherwise) with its strand, cut position and on-target scores. Give a gene symbol (resolved through MANE Select, then HGNC) or a locus, 1-based and inclusive. Each lane refuses a window wider than it will read, and says so.

NameRequiredDescriptionDefault
geneNoa gene symbol; the window is its MANE Select (or HGNC) transcript with a 2% margin either side. Takes precedence over `locus`.
locusNothe window, 1-based and inclusive, when no `gene` is given.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
assemblyYesthe UCSC assembly name (hg38, hg19, mm39…).
nucleaseNowhich nuclease the CRISPR sites are enumerated for (its PAM and cut rule). On-target scores are SpCas9-trained and come back null for any other. Values: SpCas9 (SpCas9 · NGG), SpCas9-NG (SpCas9-NG · NG), SpG (SpG · NGN), SpRY (SpRY · NRN), xCas9 (xCas9 · NG), SaCas9 (SaCas9 · NNGRRT), SaCas9-KKH (SaCas9-KKH · NNNRRT), AsCas12a (AsCas12a · TTTV), LbCas12a (LbCas12a · TTTV), enAsCas12a (enAsCas12a · TTTV).SpCas9
gene_trackNowhich RefSeq set the transcripts and protein residues come from. Values: ncbiRefSeqSelect (RefSeq Select and MANE), ncbiRefSeqCurated (RefSeq Curated), ncbiRefSeq (RefSeq All), ncbiRefSeqPredicted (RefSeq Predicted).ncbiRefSeqSelect

Output Schema

NameRequiredDescription
sitesYesCRISPR sites: spacer, PAM, strand, 1-based protospacer bounds, cut position and Rule Set 1 / CRISPRscan scores
windowYesthe window read, 1-based inclusive, and how it was reached
proteinYesper transcript: accession, strand, the first and last residue numbers in the window and the residues themselves
summaryYeswhat each lane found in the window, generated from the run
refusalsYeseach lane that did not run for this window, and why

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true). The description adds meaningful context beyond that: the default nuclease ('SpCas9 unless told otherwise'), the MANE/HGNC resolution chain, and the lane-level window-size limits ('Each lane refuses a window wider than it will read, and says so'). That last point is a useful 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.

Conciseness4/5

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

The main purpose is front-loaded in the first clause, and every subsequent clause maps to a distinct output lane, so little is wasted. It is a dense run-on paragraph rather than structured bullets, which slightly hurts scannability, but the density is justified by the tool's breadth.

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

Completeness4/5

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

With an output schema present, return-value explanation is unnecessary, and the description still covers inputs, resolution precedence, defaults, and lane limits. For a 7-parameter, nested-schema tool it is close to complete, though it omits any note on cost, rate limits, or how the _subject/_files project context interacts with the browse.

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

Parameters3/5

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

Schema coverage is 100% and the schema descriptions are already unusually rich, documenting gene precedence, 1-based inclusive locus, nuclease default, and track options. The description largely restates this ('Give a gene symbol... or a locus, 1-based and inclusive', 'SpCas9 unless told otherwise') rather than adding new parameter meaning, so the baseline 3 applies.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Read one window of a genome the way a genome browser shows it') and then enumerates the exact data lanes returned (cytogenetic bands, transcripts, protein residues, dbSNP 155 counts, ClinVar pathogenic calls, CRISPR sites). This level of specificity clearly distinguishes it from siblings like annotate_region or lookup_gene.

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

Usage Guidelines3/5

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

It explains the two input modes (gene symbol resolved through MANE Select then HGNC, or a locus) and states that gene takes precedence, which implies usage. However, it never names an alternative sibling (e.g. annotate_region, lookup_gene) or states when NOT to use this tool, so routing guidance is only implied.

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

build_addgene_depositA
Read-only
Inspect

Fill Addgene's own deposit spreadsheet from a record: one row per plasmid with its name and sequence, plus your answers for every plasmid (purpose, plasmid type, cloning method, resistance, growth strain and the other drop-downs). The sheet is fetched from Addgene each run, so its columns and choices are current; a value it would refuse is left out and named, and columns lists every column with its choices. It WRITES A FILE and sends nothing.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
answersNothe sheet's columns to fill for every plasmid, header → value, e.g. {"Purpose": "Expresses EGFP in E. coli", "Bacterial Resistance": "Ampicillin"}. A drop-down column takes one of its own choices; run once without answers to read them from `columns`.
genbankYesthe plasmids to deposit, as GenBank text: one row per nucleotide record.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
fileYesthe filled workbook: `name`, and its bytes as `base64`
columnsYesevery column of Addgene's sheet: its header, Addgene's help text, and its choices where it has a drop-down
readingYeswhat was written and what is left for the depositor, generated from the run
writtenYesplasmids written into the sheet
problemsYesevery value left out because the sheet would refuse it, with the plasmid, the column and the reason

TDQS

A3.5/5.0
Behavior1/5

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

The annotations declare readOnlyHint=true and openWorldHint=false, but the description explicitly says 'It WRITES A FILE' (a write side effect) and 'The sheet is fetched from Addgene each run' (external network interaction). Both statements contradict the annotations, making this a serious consistency failure.

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

Conciseness4/5

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

The description is front-loaded with the core action and is reasonably tight, though listing example drop-down values adds slight verbosity. Every sentence still carries useful information about behavior or validation.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. The description covers key behaviors (fetching current sheet, rejecting and naming refused values, writing a file, not sending anything), but omits practical details such as the output file's location or format, which would be helpful for a file-writing tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds minor examples of answer columns (purpose, plasmid type, etc.) but does not meaningfully extend the parameter semantics beyond what the schema provides, matching the baseline of 3.

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

Purpose5/5

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

The description states a specific verb and resource: 'Fill Addgene's own deposit spreadsheet from a record', and details the row content (one row per plasmid with name and sequence plus answers). This clearly distinguishes it from sibling submission builders like build_genbank_submission and build_ena_submission.

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

Usage Guidelines4/5

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

It gives clear context for use (depositing to Addgene from a record) and a useful workflow hint: 'run once without answers to read them from `columns`.' However, it does not explicitly state when to choose this tool over alternatives such as build_genbank_submission or build_ena_submission.

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

build_assembly_reportA
Read-only
Inspect

Build DnaCauldron's assembly report from an assembly result: the per-construct summary table, the constructs and errors spreadsheets as pandas-compatible CSV, and the Outcome / Number of assemblies stats. Wire golden_gate_assemble or gibson_assemble's products, errors and warnings outputs into it.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNothe Type-IIS enzyme, for a method that has one — it becomes the report's `enzymes` column, mirroring DnaCauldron's `Type2sRestrictionAssembly.get_extra_construct_data()`. Leave it empty for Gibson, which has no enzyme: an empty column would imply one exists.
errorsNostructured assembly errors — wire the assembly node's `errors` output. These become the errors spreadsheet, which is the most useful thing in a report about a run that did not work.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
productsNothe enumerated constructs — wire an assembly node's `products` output. Each needs `id`, `sequence` and `fragmentNames`, which is what both assembly nodes emit.
warningsNostructured assembly warnings — wire the assembly node's `warnings` output.
assembly_nameNothe name for this assembly: the `assembly_name` column of the summary table and the first field of every errors row.assembly

Output Schema

NameRequiredDescription
statsYesthe Outcome / Number of assemblies table, as `compute_stats` produces it
reportYesthe whole report object, including the summary dataframe and the plots decision
errorsCsvYesthe errors spreadsheet — upstream's `errors.csv`, or an empty string when the run had none. Faithful to upstream's own 4-header / 3-field mismatch
partsUsedYesevery part name that appears in at least one construct
summaryCsvYesthe constructs spreadsheet, pandas-compatible CRLF CSV — upstream's `constructs.csv`
summaryTextYesthe report as plain text, for a run record or a note
warningsCsvYesthe warnings spreadsheet, or an empty string when the run had none
constructCountYeshow many constructs the summary table describes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine behavioral context beyond that: output is 'pandas-compatible CSV', the report is composed of named artifacts, and the errors spreadsheet is characterized as the most useful output for a failed run. It does not spell out return structure, but an output schema exists.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action and then the wiring instruction; every clause carries information (report contents, output format, upstream inputs). It is dense but not padded. Minor density from the enumerated artifacts keeps it just short of ideal.

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

Completeness4/5

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

Given a rich 7-parameter schema at 100% coverage, existing annotations, and an output schema, the description supplies the missing cross-tool wiring and format notes an agent needs to call it correctly. Nothing critical is absent, though a brief note on ordering (assemble first, then build report) would make it fully self-contained.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3; the description adds value by tying parameters to report semantics (the enzyme becomes the report's `enzymes` column and should be left empty for Gibson to avoid implying an enzyme exists) and by specifying the required shape of `products` (id, sequence, fragmentNames). This is meaning beyond the schema, though not exhaustive for every parameter.

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

Purpose5/5

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

States a specific verb and resource ('Build DnaCauldron's assembly report from an assembly result') and enumerates exactly what the report contains: the per-construct summary table, the constructs and errors spreadsheets as pandas-compatible CSV, and the Outcome / Number of assemblies stats. It also names the upstream assembly nodes it consumes, so an agent can distinguish it from unrelated report/export siblings.

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

Usage Guidelines4/5

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

The second sentence gives explicit wiring context: 'Wire golden_gate_assemble or gibson_assemble's products, errors and warnings outputs into it', which tells the agent when this tool is appropriate (after an assembly run) and which sibling outputs feed it. It stops short of stating exclusions (e.g. when a report is unnecessary), so it is clear context rather than 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.

build_ena_submissionA
Read-only
Inspect

Turn a record into what ENA's Webin-CLI takes for an annotated sequence (-context sequence): an ENA flat file (.embl) and its manifest. Features are checked against the tables ENA's own validator reads, so what Webin-CLI would refuse (an unknown key, a missing mandatory qualifier, a double quote in a value, a duplicate feature) is refused or rewritten here, by name. A description under 10 characters, an entry under 100 bp and a missing study are reported first. It WRITES FILES and sends nothing.

NameRequiredDescriptionDefault
studyNothe Webin Portal study accession (PRJEB… or ERP…). Webin-CLI refuses a set without one; left empty, the files are written and the reason reported.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
genbankYesthe record to submit, as GenBank text. Its features, topology and DEFINITION are read from it.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
mol_typeNothe source feature's mandatory /mol_type. `other DNA` is the INSDC value for a synthetic construct.other DNA
organismNothe scientific name of the source organism; ENA checks it against its taxonomy. `synthetic construct` is a real answer for a built vector.synthetic construct
topologyNocircular for a plasmid (the ID line; only then may a feature cross the origin). Left empty, the record's own topology is used. Values: (From the record), circular (Circular), linear (Linear). Advanced.
descriptionNothe DE line, what the sequence is. Left empty, each record's own DEFINITION is used; ENA refuses one shorter than 10 characters.
geo_loc_nameNowhere the sample came from, from the INSDC vocabulary, or a missing-value term.missing: lab stock
collection_dateNowhen the sample was collected, on the source feature. Optional, but must be INSDC-legal; a construct takes a missing-value term such as `missing: lab stock`.missing: lab stock

Output Schema

NameRequiredDescription
filesYesthe flat file and its manifest, each with its `name` and `text`. Gzip the flat file before running Webin-CLI; the manifest already names the `.gz`
changesYesevery feature the writer refused, rewrote or left a qualifier off, each with ENA's reason
commandYesthe exact gzip and webin-cli invocation, with -validate
readingYeswhat the set is, generated from what was written
writtenYesfeatures written, source excluded
flatFileYesthe `.embl` alone, for reading or diffing
problemsYeswhy Webin-CLI will refuse the set as it stands: a short description, a short entry, no study, or a malformed date or locality. Empty means none of those, never that the validator will be silent

TDQS

A3.5/5.0
Behavior1/5

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

Annotations declare `readOnlyHint=true` and `destructiveHint=false`, but the description explicitly says 'It WRITES FILES,' which is a filesystem write and contradicts the read-only claim. This is an annotation contradiction; despite otherwise useful validation detail, the contradiction forces a 1.

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

Conciseness4/5

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

The description is front-loaded with the core transformation and then details validation checks; every sentence contributes useful information. It is dense but not bloated for a 10-parameter, nested-object tool.

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

Completeness4/5

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

With an output schema present, the description needn't explain return values. It covers purpose, validation, side effects, and error reporting, though the annotation contradiction creates a misleading signal about the write side effect.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds cross-parameter validation notes (unknown keys, missing mandatory qualifiers, double quotes, duplicate features, entry under 100 bp) that go beyond individual schema fields, but it largely repeats schema-provided meanings for study, description, mol_type, and organism.

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

Purpose5/5

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

States a specific verb and resource: turning a record into an ENA flat file (`.embl`) and manifest for Webin-CLI, with validation against ENA's own feature tables. It distinguishes itself from other build_* siblings by naming ENA, Webin-CLI, and the file types produced.

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

Usage Guidelines4/5

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

Gives clear context: this is for building an ENA Webin-CLI annotated-sequence submission, it writes files, and it sends nothing. It does not explicitly name an alternative sibling to use instead, but the ENA/Webin-CLI framing is sufficient to route correctly among the build_* tools.

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

build_genbank_submissionA
Read-only
Inspect

Turn a record into the SUBMISSION SET NCBI's table2asn consumes: a .fsa whose defline carries the source modifiers, and a 5-column feature table (.tbl) beside it. This is not a GenBank export — GenBank's submission pipeline takes neither a .gb nor a plain fasta. Its real work is REFUSING and MIGRATING what GenBank will not accept: twelve feature keys were retired in 2014 in favour of regulatory (promoter, terminator and RBS among them, so every plasmid map is affected), a qualifier not on a key's approved list is dropped by name, and an unapproved key is kept as a misc_feature carrying its original name. Since December 2024 GenBank has required collection_date and geo_loc_name on every submission, and both are validated here against the INSDC vocabularies BEFORE a file is written. It WRITES FILES and sends nothing: no account, no key, no upload — table2asn stays yours to run, and the submission template it also wants is yours to make.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
genbankYesthe record to submit, as GenBank text. Its features and topology are read from it — wire it from an export, or paste it.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
mol_typeNoone of INSDC's two MANDATORY qualifiers on the source key. Omitting it lets table2asn choose, which is a scientific fact picked by a tool.genomic DNA
organismNothe scientific name of the source organism. `synthetic construct` is a real answer for a built vector, not an absence.synthetic construct
topologyNocircular for a plasmid. With this omitted table2asn writes `linear` into the LOCUS line, so a plasmid is deposited as a linear molecule with no error anywhere. Left empty, the record's own topology is used. Values: (From the record), circular (Circular), linear (Linear). Advanced.
geo_loc_nameNowhere the sample came from: a country, ocean or sea from the INSDC vocabulary, optionally `:region` and `, locality`. MANDATORY since December 2024, and it takes the same missing-value terms.missing: lab stock
collection_dateNowhen the sample was collected. MANDATORY on every GenBank submission since December 2024. `DD-Mmm-YYYY`, `Mmm-YYYY`, `YYYY`, an ISO form, or two of them separated by `/` for a range. A construct that was never collected anywhere takes an INSDC missing-value term such as `missing: lab stock`.missing: lab stock

Output Schema

NameRequiredDescription
filesYesthe submission set: one entry per file, each with its `name` and `text`. The two names share a basename, which is how table2asn pairs them
changesYesevery feature the writer migrated, relabelled, refused or stripped a qualifier from, each with the authority's reason. Never empty-because-nothing-was-checked
commandYesthe exact table2asn invocation for the set, naming the submission template the user must make first
readingYeswhat the set is, generated from the record that was written rather than from the request
writtenYesfeatures written into the table. Branch on this rather than counting `changes`
problemsYeswhy the set cannot be submitted as it stands — an illegal collection date or a locality outside the vocabulary. Empty means the two mandatory modifiers are good, never that NCBI will be silent
featureTableYesthe `.tbl` alone, for pasting or diffing

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover safety/openness; the description adds a great deal of behavior the agent could not otherwise know: retired feature keys are migrated to `regulatory`, unapproved qualifiers are dropped by name, unknown keys survive as `misc_feature` with the original name, and collection_date/geo_loc_name are validated against INSDC vocabularies before any file is written. It also discloses that files are written locally with no account, key, or upload, which is consistent with openWorldHint=false and destructiveHint=false.

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

Conciseness3/5

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

The deliverable and the 'not a GenBank export' caveat are correctly front-loaded, but the middle stretch (the 2014 feature-key retirement, the plasmid-map aside, the refusal/migration narrative) is dense flavor that does not directly help an agent select or invoke the tool. It is information-rich rather than wasteful, yet it is longer than the invocation decision requires.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and the annotations cover safety. What remains — required inputs, the mandatory date/location validation, the fact that nothing is uploaded and the template is the caller's responsibility — is all stated, leaving no material gap for a correct call.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents mol_type, geo_loc_name, collection_date, topology and the `_subject` record selector in detail, so the baseline is 3. The description reinforces a few of these (mandatory-by-Date facts, source modifiers on the defline) but adds little syntax or format detail beyond what the schema states.

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

Purpose5/5

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

The first sentence states a precise verb+resource+artifact: turn a record into the submission set `table2asn` consumes, specifically a `.fsa` with source modifiers plus a 5-column `.tbl`. It also explicitly rules out adjacent interpretations ('This is not a GenBank export'), so an agent can separate it from exporters and from the ENA/addgene deposit siblings 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.

Usage Guidelines4/5

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

It gives clear when-not guidance ('GenBank's submission pipeline takes neither a .gb nor a plain fasta') and defines the boundary of responsibility ('table2asn` stays yours to run'). It does not, however, name an alternative sibling such as build_ena_submission or build_addgene_deposit, so routing between deposit builders is left to inference.

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

build_treeA
Read-only
Inspect

Build a phylogeny from aligned sequences — distance methods (NJ, BIONJ, FastME, UPGMA/WPGMA), parsimony, maximum likelihood, or Bayesian MCMC under a strict clock and coalescent prior — with branch support from a bootstrap, aLRT or aBayes, or, for the Bayesian method, clade posterior probabilities. Wire it downstream of align_sequences.

NameRequiredDescriptionDefault
gammaNogamma shape for among-site rate variation in the DISTANCE correction; 0 disables. Not the ML +Γ, which is `ml_gamma_categories`. Advanced.
modelNodistance/substitution model (ape's names). K80 is the engine's default; very divergent sequences need raw or JC69.K80
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
methodNotree-building method; distance methods are fast, ML is the slowest and best-justified. Values: nj (Neighbor-Joining), bionj (BIONJ), fastme-bal (FastME (balanced)), fastme-ols (FastME (OLS)), upgma (UPGMA), wpgma (WPGMA), parsimony (Maximum Parsimony), ml (Maximum Likelihood), bayesian (Bayesian (MCMC)).nj
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
ml_modelNoML substitution model. Values: JC69 (JC69), F81 (F81), K80 (K80), HKY (HKY), TN93 (TN93), GTR (GTR). Only applies when method is ml, or when support_method is alrt or abayes or shalrt. Advanced.GTR
ml_shapeNoα of the discrete-Γ distribution over site rates — lower means more rate variation between sites. The starting value when the shape is estimated, and the fixed value when it is not. Inert while `ml_gamma_categories` is 1, because one category has no spread. Only applies when method is ml, or when support_method is alrt or abayes or shalrt. Advanced.
bootstrapNobootstrap replicates; 0 disables. Each replicate rebuilds the whole tree, so cost scales with it — 100 is the conventional minimum for a published tree and is the panel's default. Only applies when support_method is bootstrap.
ladderizeNoorder each node's children by clade size, so the drawing reads as a ladder. Changes the Newick's child order and nothing about the topology. Advanced.
sequencesNoaligned sequences — wire align_sequences' rows here, or name library documents.
fastme_nniNoFastME refinement by nearest-neighbour interchange (ape's `nni = TRUE`). Only applies when method is fastme-bal or fastme-ols. Advanced.
fastme_sprNoFastME balanced refinement by subtree prune-and-regraft (ape's `spr = TRUE`). Only applies when method is fastme-bal. Advanced.
ml_invariantNoproportion of sites that never change; 0 disables. The starting value when it is estimated. Only applies when method is ml, or when support_method is alrt or abayes or shalrt. Advanced.
bayesian_runsNoindependent runs (MrBayes nruns), seeded seed, seed+1, ...; 2 or more pools their samples and reports the average standard deviation of split frequencies and the PSRF. Only applies when method is bayesian.
bayesian_seedNoseed of the chain; the same seed and settings reproduce the same samples. Only applies when method is bayesian. Advanced.
bayesian_tempNoheating increment (MrBayes temp): chain j samples the posterior raised to 1/(1 + temp*j). Only applies when method is bayesian. Advanced.
midpoint_rootNoroot the result at its midpoint — a drawing convention, not evidence about where the true root is. Advanced.
sh_replicatesNoRELL replicates behind `shalrt` — resamples the three fits' per-site log-likelihoods, not the alignment, so a replicate costs microseconds rather than a whole re-inference. PhyML uses 10,000. Ignored unless `support_method` is `shalrt`. Only applies when support_method is shalrt. Advanced.
bayesian_clockNoclock model: strict (one rate on every branch), ucln, the uncorrelated lognormal relaxed clock (each branch its own rate, mean 1, log-scale sd sampled under Exponential(mean 1/3), as BEAST's UCRelaxedClockModel), or none: an unrooted tree with free branch lengths under an Exponential prior and no coalescent (MrBayes' unconstrained model). Only applies when method is bayesian.strict
bayesian_kappaNotransition/transversion ratio for K80/HKY, held fixed. Only applies when method is bayesian.
bayesian_modelNosubstitution model for the Bayesian chain, its parameters held fixed for the run: base frequencies are the alignment's own for F81/HKY, and kappa is `bayesian_kappa` for K80/HKY. Values: JC69 (JC69), F81 (F81), K80 (K80), HKY (HKY). Only applies when method is bayesian.JC69
bayesian_shapeNoGamma shape (alpha) for +G, held fixed for the run; smaller means more rate variation among sites. Only applies when method is bayesian.
bootstrap_seedNoseed for whichever resampling this run does — the bootstrap's replicates, or SH-aLRT's. The same seed always reproduces the same support values. Only applies when support_method is bootstrap or shalrt. Advanced.
support_methodNowhich branch support to attach. `bootstrap` resamples alignment columns and rebuilds the tree per replicate (uses `bootstrap`/`bootstrap_seed`). The three branch tests re-infer nothing: they score each internal branch against its two nearest-neighbour rearrangements under the ML model, three likelihood evaluations per branch instead of N whole re-inferences. `alrt` is the parametric test of Anisimova & Gascuel (2006), read against a mixture-of-chi-squares null, and it saturates at 99.985%. `abayes` is the Bayesian support of Anisimova et al. (2011). `shalrt` is the Shimodaira-Hasegawa-corrected variant (PhyML `-b -4`): the same three fits, but the gap is read against a null built by RELL-resampling their per-site log-likelihoods `sh_replicates` times from `bootstrap_seed` — slower than the other two, does not saturate, and usually more conservative. All three use `ml_model`/`ml_gamma_categories`/`ml_shape`/`ml_invariant` for the model, whichever `method` built the tree. Values: bootstrap (Bootstrap), alrt (aLRT), abayes (aBayes), shalrt (SH-aLRT).bootstrap
bayesian_chainsNoMetropolis-coupled chains per run (MrBayes nchains; its default is 4): the extra chains sample a flattened posterior and swap states with the cold one, so a run can cross valleys a single chain cannot. Each chain costs a full chain's time. Only applies when method is bayesian.
include_subjectNoalso include the node's subject.
bayesian_burn_inNoiterations discarded from the start. Only applies when method is bayesian.
ml_rearrangementNotopology search moves for the ML fit. `nni` moves one subtree past its neighbour and stops at the first topology no single move improves, which is a local optimum. `spr` runs that first and then sweeps prune-and-regraft, which reaches trees NNI cannot — at a quadratic number of rearrangements per sweep rather than a linear one. `tbr` runs both and then sweeps tree bisection and reconnection, which cuts a branch and rejoins the two halves by any pair of their branches: the largest neighbourhood here, measured at 1,950 distinct topologies against SPR's 814 on an 18-taxon tree, so roughly 2.4x an SPR sweep. Ignored unless `method` is `ml` and `ml_optimise_topology` is on. Values: nni (NNI), spr (NNI, then SPR), tbr (NNI, then SPR, then TBR). Only applies when method is ml. Advanced.nni
bayesian_clock_sdNowhere the relaxed clock's sigma (log-scale sd of branch rates) starts; always sampled. Only applies when bayesian_clock is ucln. Advanced.
bootstrap_measureNowhich bootstrap statistic to report. `fbp` is Felsenstein's proportion: the share of replicates that carry this exact branch: a yes/no question per replicate, so one taxon landing elsewhere makes the answer no, which is why a well-supported clade can read near zero on a large tree. `tbe` is the transfer bootstrap expectation (Lemoine et al. 2018, Nature 556:452-456): 1 minus the average number of taxa that would have to move to turn a replicate's nearest branch into this one, over the branch's depth. TBE reads higher than FBP on the same replicates and the two are NOT interchangeable, so say which one a number is. Both read the SAME replicates, so `tbe` costs no extra inference. Only applies when support_method is bootstrap.fbp
ml_optimise_ratesNofit the substitution rates rather than holding the model's own. Only applies when method is ml. Advanced.
ml_optimise_shapeNofit the discrete-Γ shape rather than holding `ml_shape`. Costs a degree of freedom in AIC/BIC, and does nothing while `ml_gamma_categories` is 1. Only applies when method is ml. Advanced.
pairwise_deletionNoexclude a gapped site only from the pairs it is missing in, rather than from every pair. ape's default is off (complete deletion), which keeps distances mutually comparable but discards a column if ANY sequence has a gap there — turn this on for gappy alignments.
bayesian_brlen_rateNowith no clock: rate of the Exponential prior on each branch length (MrBayes brlenspr=unconstrained:exp(rate)); 10 means a prior mean of 0.1 substitutions per site. Only applies when bayesian_clock is none. Advanced.
bayesian_iterationsNoMetropolis-Hastings proposals. Each rescores the alignment, so time grows with iterations x taxa x site patterns. Only applies when method is bayesian.
ml_gamma_categoriesNodiscrete-Γ rate categories for the rate heterogeneity across sites; 1 disables it. Only applies when method is ml, or when support_method is alrt or abayes or shalrt. Advanced.
bayesian_theta_shapeNoshape of the Gamma prior on theta. Only applies when method is bayesian. Advanced.
bayesian_theta_startNostarting theta of the chain (not a prior). Only applies when method is bayesian. Advanced.
ml_optimise_topologyNolet the ML search move the topology. With this off the result is the Neighbor-Joining topology with ML branch lengths, and the engine says so in a warning. Only applies when method is ml. Advanced.
bayesian_sample_kappaNosample kappa (K80/HKY) under MrBayes' Beta(1,1) prior on kappa/(1+kappa), starting from bayesian_kappa. Only applies when method is bayesian.
bayesian_sample_shapeNosample the Gamma shape under MrBayes' Exponential(1) prior instead of holding it at bayesian_shape (which becomes the start); needs bayesian_gamma_categories > 1. Only applies when method is bayesian.
ml_optimise_invariantNofit the proportion of invariant sites rather than holding `ml_invariant`. Costs a degree of freedom in AIC/BIC. Only applies when method is ml. Advanced.
bayesian_min_part_freqNoa clade enters the split-frequency deviation only if some run sampled it at least this share of the time (MrBayes minpartfreq). Only applies when method is bayesian. Advanced.
parsimony_rearrangementNoparsimony topology search: `nni` hill-climbs by nearest-neighbour interchange, `spr` adds prune-and-regraft when NNI stalls (phangorn's own default), `tbr` adds bisect-and-reconnect when SPR stalls. Nested, not alternatives: each runs the cheaper moves first, because every NNI move is an SPR move and every SPR move is a TBR move. `tbr` searches the largest neighbourhood this tool offers — 1,950 distinct topologies against SPR's 814 on an 18-taxon tree — and rescores each candidate whole, where SPR scores incrementally, so it is markedly the slowest. Values: nni (Nearest-neighbour interchange), spr (Subtree prune-and-regraft), tbr (Tree bisection and reconnection). Only applies when method is parsimony. Advanced.nni
bayesian_gamma_categoriesNodiscrete-Gamma categories for among-site rate variation (+G, each category its bin mean); 1 is equal rates. Only applies when method is bayesian.
bayesian_sample_frequencyNokeep one tree every this many iterations after burn-in. Only applies when method is bayesian. Advanced.
bayesian_theta_prior_meanNomean of the Gamma prior on theta = 4N mu, in substitutions per site. Only applies when method is bayesian. Advanced.
bayesian_sample_frequenciesNosample the base frequencies (F81/HKY) under a flat Dirichlet, starting from the alignment's own. Only applies when method is bayesian.
ml_optimise_base_frequenciesNofit base frequencies rather than holding them equal. Only applies when method is ml. Advanced.

Output Schema

NameRequiredDescription
gammaYesthe Pybus-Harvey gamma statistic: negative if branching clusters toward the root (an early burst), positive if toward the tips. A standard normal deviate under the constant-rate null — read it with `gammaP`, and only if `clockDeviationInBranches` is below 1
gammaPYestwo-tailed P for `gamma` against the constant-rate (pure-birth) null
newickYesthe tree in Newick format
bayesianYesunder `method: bayesian`: the chain (iterations, burn-in, samples, seed, acceptance per operator), the fixed model, the priors, mean / 95% HPD / ESS of log L, theta and root height, every clade's posterior probability (0..1), the commonest topologies and the highest-posterior state. Absent under every other method
tipCountYesnumber of tips (leaves)
transferYesunder `support_method: bootstrap` with `bootstrap_measure: tbe`: per branch, its clade (the smaller side), its depth, the mean transfer distance over the replicates and the support on 0..1. Absent under `fbp`, which puts its values on the tree and nowhere else
warningsYeswhat the method had to say about the data
statisticsYestree statistics: tips, height, total length, diameter, the branch-length distribution, Colless/Sackin imbalance, cherries, treeness, the Pybus-Harvey gamma with its two-tailed P, and the ultrametricity readouts gamma depends on (`isUltrametric`, `rootToTipSpread`, `clockDeviationInBranches`)
distanceMapYesthat distance matrix as a heatmap
branchSupportYesunder `alrt`/`abayes`: the measure, the model, the tree's log-likelihood, and per branch its clade, the two alternative log-likelihoods, the statistic and the support (a fraction, not a percentage). Absent under `bootstrap`
distanceMatrixYesthe pairwise distance matrix the tree was built from
clockDeviationInBranchesYeshow far from clock-like the tree is, in MEAN BRANCH LENGTHS. `gamma` and any lineages-through-time reading assume an ultrametric tree; below 1 the raggedness cannot reorder a branching event, above it the statistic is partly rate variation and is not a diversification result

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: the methodological scope (distance through Bayesian MCMC under a strict clock and coalescent prior) and what the output carries (bootstrap/aLRT/aBayes support or clade posterior probabilities), though it omits any warning about the very different runtimes of ML/Bayesian versus distance methods.

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

Conciseness4/5

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

Two sentences, front-loaded with the core purpose and tightly packed for a 49-parameter tool; the closing pipeline directive is short and actionable. The method/support enumeration mildly duplicates the schema enums, which is the only thing keeping it from a 5.

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

Completeness4/5

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

Given an output schema exists and the schema carries full parameter documentation, the description need not restate returns or parameter mechanics. It supplies the algorithmic scope and pipeline placement an agent needs to select the tool, leaving only runtime/cost trade-offs unstated.

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

Parameters3/5

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

With 49 parameters and 100% schema description coverage, every parameter is already fully documented in the schema, so the baseline of 3 applies. The description's mention of method families and support types maps onto schema enums rather than adding new syntax or constraint detail beyond them.

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

Purpose5/5

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

States a specific verb (build) and resource (phylogeny) and enumerates the algorithm families it can run (distance, parsimony, ML, Bayesian), which is far more than restating the name. An agent can immediately distinguish it from siblings like draw_tree, export_tree, transform_tree, or tree_statistics, which operate on an existing tree rather than inferring one.

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

Usage Guidelines4/5

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

'Wire it downstream of align_sequences' gives a concrete pipeline precondition and points at the correct upstream sibling. It does not, however, name any explicit exclusions or alternatives (e.g. when to prefer draw_tree/compare_trees instead), so it stops short of full 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.

calculate_powerA
Read-only
Inspect

Power and sample size for a planned experiment: how many replicates a test needs to detect an effect, or what power, detectable effect or significance level a design that is already fixed gives. Leave ONE quantity out with solve_for and it is solved; everything else is given. Thirteen tests in two families: Cohen's standardized effect sizes (pwr 1.3-0: t one/two-sample/paired and unequal n, one and two proportions by arcsine h, normal mean, correlation, chi-square w, one-way ANOVA f, linear-model f²) and raw units (R's power.t.test from a difference and SD, power.prop.test from two proportions, power.anova.test from variances). Every number is R's, reproduced: the solved value is uniroot's root at R's tolerance, and an unreachable target is refused with R's own message. Returns the power curve around the answer and the R call that reproduces it.

NameRequiredDescriptionDefault
NNototal observations across every cell. Only applies when test is chisq.
kNonumber of groups. Only applies when test is anova.
nNoobservations per group (pairs, for paired; the sample, for one-sample and correlation). Only applies when test is t or two_proportions or one_proportion or normal_mean or correlation or anova or t_raw or proportions_raw or anova_raw.
uNonumerator degrees of freedom: the number of predictors tested. Only applies when test is linear_model.
vNodenominator degrees of freedom: n − u − 1 for n observations. Only applies when test is linear_model.
dfNodegrees of freedom of the chi-square test: (cells − 1) for goodness of fit, (rows − 1)(columns − 1) for independence. Only applies when test is chisq.
n1Noobservations in the first group. Only applies when test is t_unequal or two_proportions_unequal.
n2Noobservations in the second group. Only applies when test is t_unequal or two_proportions_unequal.
p1Nothe proportion in group 1. Only applies when test is proportions_raw.
p2Nothe proportion in group 2. Only applies when test is proportions_raw.
sdNothe standard deviation, in the same units (of the differences, for paired); R's default is 1. Only applies when test is t_raw.
testYeswhich test the experiment will be analyzed with; the power answer belongs to that test and no other. Values: t (t test: one-sample, two-sample or paired, Cohen's d), t_unequal (two-sample t test, unequal group sizes, Cohen's d), two_proportions (two proportions, equal n, Cohen's h), two_proportions_unequal (two proportions, unequal n, Cohen's h), one_proportion (one proportion against a null value, Cohen's h), normal_mean (normal mean, known variance, effect d), correlation (Pearson correlation, r), chisq (chi-square goodness of fit or independence, Cohen's w), anova (balanced one-way ANOVA, Cohen's f), linear_model (linear model F test (multiple regression), Cohen's f²), t_raw (t test in raw units: difference and standard deviation), proportions_raw (two proportions in raw units: p1 and p2), anova_raw (balanced one-way ANOVA in raw units: between- and within-group variance).
typeNothe t test's design. Only applies when test is t or t_raw.two.sample
powerNo1 − β, the chance of detecting the effect if it is real. No default: the target is yours to choose.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
effectNothe standardized effect: Cohen's d for t and normal-mean tests, h for proportions, r for correlation, w for chi-square, f for ANOVA, f² for the linear model. Give a value or `effect_size` instead. Only applies when test is t or t_unequal or two_proportions or two_proportions_unequal or one_proportion or normal_mean or correlation or chisq or anova or linear_model.
groupsNonumber of groups. Only applies when test is anova_raw.
strictNotwo-sided raw-unit tests: also count rejections in the wrong tail, as R's strict = TRUE. Only applies when test is t_raw or proportions_raw. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sig_levelNoα, the type I error rate; R's default.
solve_forNothe one quantity to solve. Left unset it is the test's sample size (n; n2 for unequal groups, N for chi-square, v for the linear model). `effect` solves the smallest detectable effect.
differenceNoδ, the true difference in means, in the measurement's units. Only applies when test is t_raw.
within_varNovariance within groups. Only applies when test is anova_raw.
alternativeNotwo-sided, or the direction a one-sided test looks in (the raw-unit t and proportion tests take only two.sided or one.sided). Only applies when test is t or t_unequal or two_proportions or two_proportions_unequal or one_proportion or normal_mean or correlation or t_raw or proportions_raw.two.sided
between_varNovariance of the group means. Only applies when test is anova_raw.
effect_sizeNoCohen's conventional small, medium or large effect for this test (pwr's cohen.ES), when there is no estimate from data. A convention, not a measurement, and every answer built on it says so. Only applies when test is t or t_unequal or two_proportions or two_proportions_unequal or one_proportion or normal_mean or correlation or chisq or anova or linear_model.

Output Schema

NameRequiredDescription
powerYesthe power of the design
rCallYesthe R call that reproduces the answer
valueYesthe solved quantity's value
solvedYeswhich quantity was solved
valuesYesevery quantity of the test, the solved one included, by R's name
warningsYesR's own warnings for this solve, verbatim
powerCurveYespower against the sample size, every other quantity held
wholeUnitsYesthe sample size rounded up to whole units and the power that whole number gives

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare a safe read operation (readOnlyHint=true, destructiveHint=false), yet the description adds real behavioral context: numbers are R's own, solved values come from uniroot at R's tolerance, unreachable targets are refused with R's message, and the return includes the power curve plus the reproducing R call. That is substantive beyond the 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.

Conciseness4/5

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

Dense but front-loaded: purpose and the solve_for contract come first, then the test taxonomy, then return behavior. The parenthetical list of thirteen tests is long, but for a combinatorial 26-parameter tool that detail is largely load-bearing rather than filler.

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

Completeness5/5

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

Given 26 parameters, nested objects, five enums, and an output schema, the description covers what the tool computes, how to control the solve, which tests exist, and what comes back. Nothing an agent needs 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 and the schema already documents the 26 parameters. The description nevertheless adds meaning the schema lacks: the leave-one-out solve_for convention, which quantity defaults when solve_for is unset, and the caveat that effect_size is a convention rather than a measurement.

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

Purpose5/5

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

States a specific verb (calculate power and sample size) on a specific resource (a planned experiment) and enumerates the thirteen tests it covers in two families. An agent can distinguish it from calculate_rnaseq_power or simulate_rnaseq_power from the description alone.

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

Usage Guidelines4/5

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

Explicitly states the operating contract: 'Leave ONE quantity out with `solve_for` and it is solved; everything else is given.' That tells the agent how to drive the tool. It does not, however, name sibling tools or when to prefer this over calculate_rnaseq_power/plan_rnaseq_experiment, 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.

calculate_rnaseq_powerA
Read-only
Inspect

Sample size and power for an RNA-seq comparison of two groups, one gene at a time: the biological replicates per group needed to detect a fold change at a given sequencing depth and within-group coefficient of variation, or the power, detectable fold change, CV or α a fixed design gives. Leave one of n, cv, effect, alpha and power out (or name it in solve_for). Every quantity takes a list, and the answer is the whole grid, so depth against replicates is one call. RNASeqPower 1.52.0 (Hart et al. 2013), reproduced: a negative binomial count with Poisson sequencing noise 1/depth plus biological variance CV².

NameRequiredDescriptionDefault
nNobiological replicates in group 1 (and in group 2, unless `n2` is given).
cvNothe biological coefficient of variation within a group: 0.4 or less for most genes in human studies, about 0.1 in inbred animals (Hart et al.).
n2Noreplicates in group 2, one per `n`. Advanced.
cv2Nothe CV within group 2, one per `cv`. Advanced.
alphaNoα, the two-sided false-positive rate per gene.
depthYesaverage depth of coverage of the gene: its expected read count per sample. Hart et al. found most genes at 0.1 per million mapped reads, so 4 at 40 million.
powerNo1 − β, the chance of detecting the change if it is real. No default: the target is yours to choose.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
effectNothe fold change to detect; 2 and 0.5 are the same change.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
solve_forNothe quantity to solve. Left unset, it is the one of n, cv, effect, alpha and power that was not given. Values: n (n per group), cv (CV), effect (fold change), alpha (α), power (power).

Output Schema

NameRequiredDescription
gridYesevery design in the grid: each quantity, and the solved one
curveYesthe solved quantity along the first quantity given as a list, one line per value of the second
rCallYesthe R call that reproduces the grid
valueYesthe solved value, when the design is a single cell
solvedYeswhich quantity was solved

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds meaningful behavioral context: the RNASeqPower 1.52.0 method, a negative-binomial count model with Poisson sequencing noise and biological CV², and grid-return behavior, though auth/rate limits are not relevant.

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

Conciseness5/5

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

Four dense sentences, front-loaded with the purpose and then the key invocation rules and method. No filler; every clause carries statistical or usage information.

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

Completeness4/5

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

For a complex 11-parameter statistical tool with an output schema and full schema description coverage, the description covers the core computation and the solve-for mode. It leaves the _files/_subject record plumbing and sibling routing to the schema and other tools, which is a minor gap.

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

Parameters4/5

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

Schema coverage is 100%, so each parameter is already documented in detail. The description adds the cross-parameter rule for omitting one of n, cv, effect, alpha, or power and the vectorization behavior that the answer is the whole grid, which is useful meaning beyond the individual schema fields.

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

Purpose4/5

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

The first sentence specifies the exact computation (sample size and power for a two-group RNA-seq comparison, one gene at a time) and names the statistical model, so the agent knows the domain. It does not explicitly name or contrast with the sibling calculate_power, so it is clear but not sibling-differentiating.

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

Usage Guidelines3/5

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

The description explains the invocation pattern — leave one of n, cv, effect, alpha or power out, or name it in `solve_for` — and notes that inputs are vectorized into a grid. It does not say when to choose this over calculate_power, estimate_effect_size, or plan_rnaseq_experiment, so alternative selection is left implicit.

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

call_bases_from_traceA
Read-only
Inspect

Call the bases of a Sanger trace from the signal, discarding the instrument's calls and deriving the bases, their positions and their quality from the peaks. The read can come back a DIFFERENT LENGTH than the file's. This ANSWERS the question; adopt_trace_calls is what puts the answer onto the read.

NameRequiredDescriptionDefault
tableNothe instrument/polymer calibration table to score against. The same signal scores differently under each, so a quality value is only interpretable with the table named. Defaults to ABI 3730 POP-7.3730pop7
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace to run on: a file name (`read_F.ab1`) or its project file id. Leave unset to use the trace tab on screen. A file id is project-specific, so a template ships this unset.

Output Schema

NameRequiredDescription
basesYeshow many bases the reading called
meanQualityYesthe mean Phred of the reading, on the calibration table it names
instrumentBasesYeshow many the FILE carries, so a gate can see a de-novo reading change the read's length

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds genuinely non-obvious behavior: that instrument calls are discarded, bases/positions/quality are re-derived from peaks, the returned read may be a DIFFERENT LENGTH than the file, and that this operation does not itself modify the read. This is meaningful behavioral disclosure beyond structured data.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action, then the surprising behavioral note (different length), then the sibling relationship. Every sentence carries distinct information and none is redundant.

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

Completeness5/5

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

For a non-trivial tool with an output schema (so return values needn't be explained), full annotation coverage, and 100% param documentation, the description supplies exactly the missing pieces: what it derives, the length caveat, and its relationship to the adopting sibling.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents `table`, `_files`, `_subject`, and `document`. The description adds no parameter-level detail (e.g., how `table` affects scoring), so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('call the bases of a Sanger trace from the signal') and clarifies the mechanism (discarding instrument calls, deriving from peaks). It explicitly distinguishes itself from the sibling `adopt_trace_calls`, so an agent can tell the two apart 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.

Usage Guidelines4/5

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

Names the alternative (`adopt_trace_calls`) and states the division of labor: this tool ANSWERS the question while the sibling applies the answer onto the read. Clear routing context, though it gives no explicit exclusions or when-not guidance (e.g., versus `call_mixed_bases_from_trace`).

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

call_cqA
Read-only
Inspect

Amplification curves to Cq, one row per reaction. Fits each raw fluorescence curve to a sigmoid (l4-l7, b4-b7), reads the Cq off it under any of the seven definitions (cpD1, cpD2, maxE, expR, Cy0, CQ, maxRatio) or at a fluorescence threshold you set (the classic Ct), and returns the per-reaction efficiency and the fit-quality block beside it, so a bad fit is visible next to the Cq it produced rather than hidden behind it. Also reports the two exponential-phase locators (Tichopad take-off, model midpoint), which come back null rather than 0 when a curve has no exponential phase at all.

NameRequiredDescriptionDefault
modelNowhich sigmoid is fitted before a Cq is read off it. Ignored when `auto_model` is on, except as the starting point mselect ranks from. Values: l4 (l4 · 4-param log-logistic), l5 (l5 · + asymmetry), l6 (l6 · + linear baseline drift), l7 (l7 · + quadratic baseline), b4 (b4 · 4-param logistic (raw scale)), b5 (b5 · + asymmetry), b6 (b6 · + linear baseline drift), b7 (b7 · + quadratic baseline).l4
shiftNocycles added to every reported Cq, for aligning against an instrument's own numbering. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
curvesYesthe amplification table: a header row, first column the cycle number and every other column one reaction's fluorescence. Tab- or comma-separated, and read by the same parser the Curve->Cq tab uses.
amountsNothe known template amount of each reaction, in column order (comma- or space-separated, `-` for a reaction with none). Each reaction given one reports its calibration factor `cf`, the amount over `init1`, the fit's fluorescence at cycle 0, which is what an absolute quantification scales an unknown's `init1` by. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cq_methodNowhich Cq definition. These are genuinely different quantities, not one number under several names. Values: cpD2 (cpD2 · second-derivative max), cpD1 (cpD1 · first-derivative max), maxE (maxE · cycle of maximum efficiency), expR (expR · exponential region), Cy0 (Cy0 · tangent x-intercept (Guescini)), CQ (CQ · 20 % of the Cq fluorescence), maxRatio (maxRatio · spline, model-free (Shain)).cpD2
criterionNohow auto_model ranks. The nested tests are only meaningful inside one family (l4-l7 or b4-b7); AICc weights is the one that can rank all eight. The reduced chi-square needs a measurement error per cycle and the only honest source is the plate's own replicates, so it REFUSES a plate with none. Values: ftest (Nested F-test (within family)), ratio (Likelihood ratio (within family)), weights (AICc weights (all eight models)), chisq (Reduced chi-square (needs replicates)). Only applies when auto_model is true.ftest
thresholdNoa fluorescence threshold, on the plate's own fluorescence scale. Set, every Cq is the cycle where the fitted curve crosses it (the classic threshold cycle, Ct) and `cq_method` is overridden. Blank reads the Cq under `cq_method`. A reaction that never reaches it has no Cq and says so.
auto_modelNolet the plate choose its own model. mselect runs on the FIRST reaction and its winner is applied to every reaction, because Cqs fitted under different models are not comparable — the result reports which model won and the full ranking table.
baseline_toNolast cycle of that window. In cycle. Advanced.
baseline_fromNofirst cycle of the window the sliwin and LRE estimators scan a baseline over. Affects the all-methods table only: the sigmoidal fit and its Cq do not use a baseline scan. In cycle. Advanced.
baseline_scanNohow many SDs of offset the baseline scan searches; 0 subtracts nothing, which is upstream's own default and is WRONG on real instrument data. Measured against the real LinRegPCR over the 47 reactions of the bundled Own Mix B plate: scanning gives a median efficiency disagreement of 0.038, not scanning gives 0.460. The result reports what the other setting would have returned, so the choice is never hidden. In SD. Advanced.
outlier_methodNowhich kinetic-outlier test judges the reaction shapes. Two are univariate and three judge a curve's whole shape against a robust MCD covariance of the plate, so a plate can look clean under one and dirty under another. Values: uni1 (Efficiency Z-score (Bar)), uni2 (Shape: cpD1 − cpD2 (Tichopad)), multi1 (Multivariate: cpD1 vs cpD2 residual (Tichopad MOD1)), multi2 (Multivariate: slope, Fmax (Tichopad MOD2)), multi3 (Multivariate: slope, F at cpD1, Fmax (Sisti)). Advanced.uni2
max_ratio_smoothNosmooth the raw curve before the maxRatio spline is drawn, as qpcR's `eff(smooth = TRUE)` does. Moves only the `maxRatio` Cq. Only applies when cq_method is maxRatio. Advanced.
max_ratio_baseshiftNofluorescence added to every cycle before the maxRatio spline is drawn. qpcR's own remedy when a baseline near zero makes the cycle-to-cycle ratio explode; it moves only the `maxRatio` Cq. Only applies when cq_method is maxRatio. Advanced.

Output Schema

NameRequiredDescription
rowsYesone row per reaction: Cq, cpD1, cpD2, efficiency, the fit-quality block, take-off and midpoint, the initial fluorescence two ways (`init1` the fit at cycle 0, `init2` the fluorescence at the Cq over E^Cq), and `cf`, the known amount over `init1` for a reaction given one (NaN otherwise)
countYeshow many reactions were fitted
modelYesthe model that produced these Cqs, named: a Cq without its model is not comparable, and under `auto_model` this is the one that WON rather than the one you asked for
failedYesreactions whose fit did not converge. A non-zero count is a finding about the plate, not a warning to swallow
methodsYesthe all-methods table: the same reactions measured four independent ways (sigmoidal fit, sliwin, expfit, LRE) with each failure NAMED, plus what sliwin returns under the other baseline setting. Agreement between them is the evidence a well is clean
cqMethodYesthe Cq definition used: `cpT` when a `threshold` was set, since a threshold overrides `cq_method`
outliersYesthe kinetic-outlier verdicts, including the reactions the test could not MEASURE — reported as not judged with the reason, never as passing
errorNoteYesa plate-level note from the fit (for example a reaction the model could not fit); null when there is none
thresholdYesthe fluorescence threshold every Cq was read at; null when the Cq came from `cq_method` instead
modelTableYesthe full model ranking when `auto_model` chose one — logLik, AIC, AICc, residual variance, F test, likelihood ratio, AICc weight and reduced chi-square per model. Null when the model was given rather than chosen
modelChosenYesthe curve model the ranking chose when the model was not given; null when it was given
outlierStatYeswhich statistic judged them, or the refusal when the plate could not support the test
zeroCrossingYesreactions whose fluorescence crosses zero after `max_ratio_baseshift` is added, where the spline estimators put a pole in the series and would return a confident 1e16. Named rather than printed
meanEfficiencyYesmean per-reaction efficiency over the reactions that fitted, as a percentage
amplificationPlotYesthe raw amplification curves as read from the plate, one line per reaction, fluorescence against cycle

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already mark it as a safe read, and the description goes well beyond that: it says outputs include per-reaction efficiency and a fit-quality block so bad fits stay visible, that exponential-phase locators return null rather than 0, that auto_model applies the first reaction's winner plate-wide for comparability, and that the chisq criterion refuses plates with no replicates. This is rich, decision-relevant behavior disclosure.

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

Conciseness4/5

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

A single dense paragraph that front-loads the core operation and then layers in caveats; nearly every clause earns its place. It is long, but the density is warranted for a 16-parameter tool.

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

Completeness4/5

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

For a complex tool the description covers the main paths (fit → Cq under method or threshold → efficiency and fit quality), and an output schema exists so return values need no elaboration. Its only gap is not positioning against sibling tools, which leaves completeness just short of the top band.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 16 parameters in depth. The description echoes key semantics (threshold overrides cq_method, model families l4–l7 vs b4–b7), but adds little that isn't already in the schema descriptions, so baseline 3 applies.

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

Purpose5/5

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

'Amplification curves to Cq, one row per reaction' states a specific resource and output shape, then names the exact operation (sigmoid fit, Cq read-off) and the seven definitions and threshold path. An agent can distinguish this from siblings like bootstrap_cq or relative_expression 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.

Usage Guidelines3/5

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

The description implies usage through detail (e.g. 'the classic Ct' for threshold mode, null-vs-0 exponential locators), but it never states when to call this tool instead of siblings such as bootstrap_cq, read_rdml_run, or quantify_dpcr. Guidance is implied, not explicit.

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

call_mixed_bases_from_traceA
Read-only
Inspect

Call the bases of a Sanger trace AND ask at every position whether a second allele is present, writing a two-base IUB code (R, Y, S, W, K, M) where it is. mode: het assumes the two alleles are present in equal amounts, which is the diploid heterozygote case; mode: mix assumes nothing about their ratio, for a mixed template, a contaminated read or a pooled sample. The two disagree: on this repo's own corpus they differ on 348 of 5,605 calls. Also returns the ALTERNATIVE calls the search considered and rejected.

NameRequiredDescriptionDefault
modeNohet = the two alleles are assumed present 1:1 (a diploid heterozygote); mix = no assumption is made about their ratio.het
tableNothe instrument/polymer calibration table to score against. The same signal scores differently under each, so a quality value is only interpretable with the table named. Defaults to ABI 3730 POP-7.3730pop7
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace to run on: a file name (`read_F.ab1`) or its project file id. Leave unset to use the trace tab on screen. A file id is project-specific, so a template ships this unset.
min_ratioNohow tall a second peak must be, as a fraction of the called peak, before the search will consider it as a second allele. Lowering it widens what is considered, which is not the same as calling more mixed bases.

Output Schema

NameRequiredDescription
basesYeshow many bases the reading called
mixedBasesYeshow many positions were called as carrying two alleles. Reported as 0 rather than omitted when none were, because a missing field is not an answer
meanQualityYesthe mean Phred of the reading, on the calibration table it names
instrumentBasesYeshow many the FILE carries, so a gate can see a de-novo reading change the read's length

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the two modes disagree on 348 of 5,605 calls on the repo corpus, and the tool also returns the alternative calls the search rejected.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence and the mode distinction follows logically. Four sentences with little waste, though the corpus-disagreement statistic is a nice-to-have rather than strictly necessary.

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

Completeness5/5

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

An output schema exists, so return values need not be spelled out, and the description still notes the extra rejected alternatives. Mode, scoring-table dependence, and executable context are covered, leaving nothing an agent needs to call it correctly missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning the schema lacks for `mode` by naming concrete scenarios (mixed template, contaminated read, pooled sample) and quantifying how the two modes diverge, which helps an agent choose. It says nothing extra about `min_ratio` or `table`, keeping it out of 5 territory.

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

Purpose5/5

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

States a specific verb and resource ('Call the bases of a Sanger trace') and immediately extends it with the distinguishing behavior (testing for a second allele and emitting two-base IUB codes). This lets an agent separate it from the plain-base sibling without inspecting the schema.

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

Usage Guidelines4/5

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

Gives clear when-to-use guidance for the key branch: `het` for a diploid heterozygote, `mix` for mixed template, contaminated read, or pooled sample, plus a concrete disagreement statistic. It does not explicitly name the alternative sibling (e.g. call_bases_from_trace) or state when not to use this tool, so it falls short of 5.

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

cancel_research_runA
Read-only
Inspect

Withdraw a research run's pending hypotheses (all of them, or the ones named) so no resume runs them, and return the sealed run file. Nothing is deleted: a canceled hypothesis stays registered and still counts in e-BH with e 1, because it was registered before any result and dropping it would raise the others' chance of support after the fact. Answered and settled hypotheses cannot be canceled. To stop a run that is advancing in budgeted slices, stop calling resume_research_run; cancel when the pending hypotheses should never run.

NameRequiredDescriptionDefault
runYesthe run file to cancel pending hypotheses in.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
reasonNowhy, recorded on each canceled attempt.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
hypothesesNothe pending hypotheses to cancel, by id; unset cancels every pending one.

Output Schema

NameRequiredDescription
runYesthe whole program as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue
statusYesthe canceled run's status: counts, pending (now none of the canceled), settled and canceled hypotheses
cancelledYesthe hypotheses this call canceled

TDQS

A3.8/5.0
Behavior1/5

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

The annotations declare readOnlyHint=true, but the description describes a state-changing operation: pending hypotheses are withdrawn so no resume will run them, a reason is recorded on each canceled attempt, and the run file comes back sealed. That is a mutation of run state, which directly contradicts the read-only annotation (destructiveHint=false is at least consistent with 'Nothing is deleted').

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

Conciseness4/5

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

The action and its scope are front-loaded, followed by the non-deletion guarantee, the precondition, and the sibling routing. The e-BH rationale is a full sentence of statistics that is informative but slightly heavy for a tool description, keeping it just short of 5.

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

Completeness5/5

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

For a five-parameter, nested-object tool with an output schema, everything an agent needs is present: what is canceled, what is preserved, what cannot be canceled, and which sibling to use instead. Return values are covered by the output schema, so the description need not restate them.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents run, hypotheses, reason, _files and _subject; the description only echoes the hypotheses default ('all of them, or the ones named') and that reason is recorded per attempt. Useful confirmation, but no meaning beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description names a specific verb+resource combination: withdrawing a research run's pending hypotheses, with scope spelled out (all of them, or the named ones) and the return value (the sealed run file). It is trivially distinguishable from list_research_runs, research_run_status, and resume_research_run.

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

Usage Guidelines5/5

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

It explicitly routes the agent: 'To stop a run that is advancing in budgeted slices, stop calling resume_research_run; cancel when the pending hypotheses should never run.' It also states the exclusion 'Answered and settled hypotheses cannot be canceled,' 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.

canonical_tautomerA
Read-only
Inspect

A small molecule's tautomers and the canonical one, as RDKit's TautomerEnumerator finds and scores them: 37 hydrogen-shift transforms (after MolVS and Sitzmann 2010), scored by aromatic rings, twelve weighted groups and hydrogens on P, S, Se and Te, ties to the smaller SMILES. Returns every tautomer, the canonical SMILES, the score and the 0-based atoms (implicit hydrogens, molfile order) a hydrogen moved between.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculeYesthe structure: SMILES or a molfile.
max_tautomersNostop the enumeration at this many tautomers.
max_transformsNostop after this many transform applications.

Output Schema

NameRequiredDescription
summaryYesthe enumeration in words, with the cap when one was reached
canonicalYesRDKit's canonical tautomer, as canonical SMILES
tautomersYesevery tautomer enumerated, as canonical SMILES, sorted

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already mark this as a safe, non-destructive read operation. The description adds substantial behavioral context: the algorithm, the 37 hydrogen-shift transforms, scoring criteria, tie-breaking by smaller SMILES, and the exact atoms tracked between tautomers.

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

Conciseness4/5

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

The definition is two sentences with no wasted words and front-loads the purpose before technical details. The first sentence is dense with scoring and algorithm specifics, but those details are relevant to a complex cheminformatics tool.

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

Completeness5/5

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

Given the available output schema, 100% parameter coverage, and safety annotations, the description is complete enough for correct invocation. It explains the algorithm and return semantics without needing to repeat schema-level details.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description adds no syntax or format details for molecule, max_tautomers, max_transforms, _files, or _subject beyond what the schema provides, making the baseline of 3 appropriate.

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

Purpose4/5

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

The description specifies a concrete resource and action: finding a small molecule's tautomers and the canonical one via RDKit's TautomerEnumerator. It is clear what the tool does, but it does not explicitly distinguish itself from related sibling tools such as enumerate_protonation_states or compare_molecules.

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

Usage Guidelines2/5

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

The description implies use for small-molecule tautomer enumeration but gives no explicit guidance on when to choose this tool over alternatives. There are no conditions, exclusions, or named sibling tools to route the agent.

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

check_assay_decayA
Read-only
Inspect

Check a published PCR or sequencing assay against the sequences that are circulating now: for each oligo, where its best binding site is in each genome, how many positions mismatch, and whether a mismatch sits in the 3′ end a polymerase has to extend through. It answers the question an assay's age raises — the design was made against the genomes available on the day, and the target has drifted under it since — as a RATE per oligo with an exact binomial interval, plus the mismatch count at each position of the oligo, which is the shape a manufacturer's own in-silico inclusivity table takes. IUPAC codes in an oligo are read as the breadth its designers meant, so a position a code covers is never a mismatch; a site overlapping ambiguous bases in a submitted assembly is missing data and leaves that genome out of that oligo's denominator rather than counting as a match or a mismatch. A probe gets no 3′-end rate, because it is not extended. Graded against EMBOSS fuzznuc on every oligo of twelve published SARS-CoV-2 assays over 400 genomes.

NameRequiredDescriptionDefault
assayNowhat the assay is called, for the result to name.assay
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
probesNothe assay's probes, 5′→3′. Scored the same way but with no 3′-end rule: a probe is not extended.
primersNothe assay's primers, 5′→3′, IUPAC allowed. Written `name=SEQUENCE` to carry the published name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequencesYesthe genomes to check against: wire upstream records here, or list library document names.
include_subjectNoalso check the node's subject (the open or wired record).
three_prime_windowNohow many bases from a primer's 3′ end count as its 3′ end. 5 is the window Primer-BLAST's own specificity rule uses. In bp.

Output Schema

NameRequiredDescription
sitesYesevery (oligo, genome) site: strand, start, the mismatching positions and whether the genome could be scored
worstYesthe oligo with the highest mismatch rate, which is the one that decides the assay
oligosYesper oligo: genomes scored, genomes with a mismatch, the rate and its exact 95% interval, the 3′-end count, and the mismatch count at each position
resultYesthe full result
worstRateYesthat oligo's mismatch rate, for a threshold downstream
threePrimeYeshow many (primer, genome) pairs carry a mismatch in the 3′-end window

TDQS

A4/5.0
Behavior5/5

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

Beyond the readOnly/non-destructive annotations, the description discloses real behavioral rules an agent could not infer: IUPAC positions are never counted as mismatches, ambiguous assembly bases are treated as missing data and drop that genome from the oligo's denominator rather than counting either way, probes receive no 3′-end rate, and results are reported as rates with exact binomial intervals. It also cites external validation (EMBOSS fuzznuc, twelve SARS-CoV-2 assays, 400 genomes), which is unusually informative.

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

Conciseness3/5

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

The purpose is front-loaded, which is good, but the body is a single dense paragraph of stacked em-dash clauses with no ordering or grouping, and the closing EMBOSS validation sentence reads more like a credibility claim than operational guidance. It is not bloated relative to tool complexity, but it is harder to parse than it needs to be.

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

Completeness4/5

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

For an 8-parameter tool with nested objects and an output schema, the description covers the hard edge cases (IUPAC breadth, ambiguous bases, probe vs primer extension) that an agent could not infer. The wiring parameters (_subject, _files, include_subject) are left to the schema, which is acceptable since an output schema exists to cover returns.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents assay, primers (name=SEQUENCE, IUPAC allowed), probes, three_prime_window (bp, Primer-BLAST's rule), and sequences. The description adds conceptual behavior for primers vs probes and for IUPAC handling, but that is scoring semantics rather than per-parameter clarification, so the baseline 3 is the right level.

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

Purpose4/5

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

The opening clause gives a specific verb and resource: "Check a published PCR or sequencing assay against the sequences that are circulating now," and enumerates the concrete outputs (best binding site per genome, mismatch count, 3′-end involvement). It is clearly a drift/decay audit rather than a primer-design or specificity tool, though it never explicitly names the sibling (e.g. check_primer_specificity) it should not be confused with.

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

Usage Guidelines4/5

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

Usage context is well framed: "It answers the question an assay's age raises — the design was made against the genomes available on the day, and the target has drifted under it since," which tells an agent exactly when this tool applies. It stops short of stating exclusions or naming alternatives (e.g. when to prefer primer_check or check_primer_specificity).

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

check_color_balanceA
Read-only
Inspect

Will the sequencer SEE these indexes? Per-cycle channel occupancy for a set of index sequences under an instrument's own SBS chemistry, checked against Illumina's rules (no dark cycle, both channels preferred, no GG in the first two cycles), each violation citing the vendor article it comes from — and the same set scored across EVERY chemistry generation at once, because XLEAP moved the dual-color base from A to C and a set balanced on a NovaSeq 6000 is not balanced on a NovaSeq X. This is the color question alone; check_index_pool asks it alongside distance, duplicates and hopping for a whole pool.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
barcodesYesthe index sequences to score, one per sample.
instrumentNothe instrument whose chemistry the set is judged under, and whose index-2 orientation applies.NovaSeq X / X Plus

Output Schema

NameRequiredDescription
okYeswhether the set clears every rule for this chemistry
tierYesIllumina's own grading of this set on this instrument: `ideal`, `acceptable` or `unacceptable`
cyclesYesper-cycle channel occupancy — the census the tier is computed from
violationsYeseach rule broken, the cycles it was broken at, and the vendor article it comes from
channelPlotYesthe fraction of the pool producing signal in each channel at each index cycle; the series are named after the channels, and their colors are not the dyes
acrossChemistriesYesthe SAME set scored under every chemistry generation, so a set that passes here and fails on another instrument says so before the run

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already carry readOnly/openWorld=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: which rules are evaluated (no dark cycle, both channels, no GG in first two cycles), that each violation cites its vendor article, and that scoring is repeated across every chemistry generation due to the XLEAP dual-color base shift. It stops short of stating output shape, but an output schema exists to cover that.

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

Conciseness4/5

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

Front-loads the question and the scope before the distinguishing detail. Dense but each clause earns its place — rule list, citation behavior, cross-chemistry rationale, then sibling routing. Slightly long but not padded.

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

Completeness4/5

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

For a 4-param tool with nested objects, an output schema and annotations, the description supplies the domain rationale (why cross-chemistry matters) and the sibling boundary. The generic _subject/_files plumbing is left to schema descriptions, which is reasonable.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description implies the instrument parameter ('under an instrument's own SBS chemistry') and the barcodes set, but adds no syntax, format, or edge-case guidance for the nested _subject/_files params beyond what the schema already documents.

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

Purpose5/5

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

States a specific verb+resource: per-cycle channel occupancy for index sequences judged against Illumina's rules under a given instrument's SBS chemistry. The rhetorical opener ('Will the sequencer SEE these indexes?') frames the practical goal, and it explicitly distinguishes itself from check_index_pool.

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

Usage Guidelines5/5

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

Explicitly states the boundary with the named alternative: 'This is the color question alone; check_index_pool asks it alongside distance, duplicates and hopping for a whole pool.' That gives the agent both when-to-use and when-not, plus the cross-chemistry scope that motivates the tool.

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

check_golden_gate_partsA
Read-only
Inspect

Check parts BEFORE a Type-IIS assembly: how many recognition sites each carries, which of them are the two deliberate flanking sites and which are internal sites that will mis-cut the part. This is what answers “why will this assembly not work” — an internal site has to be domesticated (silently recoded) before the reaction can be trusted.

NameRequiredDescriptionDefault
partsNothe parts to check — wire upstream `record` outputs here, or list library document names/ids.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNothe Type-IIS enzyme the assembly will use.BsaI
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
include_subjectNoalso check the node's subject.

Output Schema

NameRequiredDescription
partsYesone row per part: site count, internal-site count, whether it is assembly-ready, and the problem when it is not
readyYestrue when every part carries exactly its two flanking sites
internalSiteCountYesinternal sites across all parts — the number that must reach zero
needsDomesticationYesthe parts carrying internal sites, each with every offending site's position and strand

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare a safe read-only, closed-world operation. The description adds real behavioral context: it enumerates what the check reveals (site counts, flanking vs internal classification) and states the consequence of an internal site (must be domesticated before the reaction is trusted), which is beyond what annotations convey.

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

Conciseness4/5

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

Front-loaded with the core action and timing, then explains the diagnostic value. It is dense but every sentence earns its place; the em-dash clause is mildly rhetorical but still informative.

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

Completeness4/5

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

For a 5-parameter tool with nested objects, an output schema, and annotations covering safety, the description gives enough to call it correctly and understand the result. It does not explicitly connect parameters to the diagnostic output, a minor gap given the output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema itself documents parts, _files, enzyme, _subject, and include_subject. The description adds no parameter-level detail (e.g., enzyme default behavior or the include_subject toggle), so baseline 3 is appropriate.

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

Purpose5/5

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

Specific verb+resource with clear scope: check parts for Type-IIS recognition sites, distinguishing deliberate flanking sites from internal mis-cut sites. It carves out a distinct role from siblings like golden_gate_assemble (which performs the assembly) and domesticate_part (which fixes internal sites).

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

Usage Guidelines4/5

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

"Check parts BEFORE a Type-IIS assembly" gives explicit timing/context, and the domestication note implies the follow-up action when an internal site is found. It stops short of naming domesticate_part as the alternative tool explicitly.

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

check_index_poolA
Read-only
Inspect

Will this pool of sample indexes actually sequence? One verdict over the indexes a lab is about to load: duplicates, uniform length, the distance the set really guarantees against the distance it claims, per-cycle color balance on the chosen instrument's own chemistry, the index-2 orientation that instrument reads, and index-hopping exposure — how many i7 x i5 combinations exist against how many are in use, and which swaps would turn one sample's read into another's undetectably. Takes a pasted list or a vendor kit by id. It CHECKS a pool; design_barcodes builds one.

NameRequiredDescriptionDefault
kitNoa vendor kit id instead of a pasted list — the kit's own indexes are resolved and checked. Ignored when `pool` is given. Values: (No kit — paste a list instead), truseq-single-indexes (TruSeq Single Indexes — Illumina, 24 indexes), truseq-cd-indexes (TruSeq DNA and RNA CD Indexes — Illumina, 96 indexes), idt-truseq-ud-indexes (IDT for Illumina–TruSeq DNA and RNA UD Indexes — Illumina / IDT, 100 indexes), idt-illumina-ud-plate-a (IDT for Illumina UD Indexes, Plate A/Set 1 — Illumina / IDT, 96 indexes), idt-illumina-ud-plate-b (IDT for Illumina UD Indexes, Plate B/Set 2 — Illumina / IDT, 96 indexes), idt-illumina-ud-plate-c (IDT for Illumina UD Indexes, Plate C/Set 3 — Illumina / IDT, 98 indexes), idt-illumina-ud-plate-d (IDT for Illumina UD Indexes, Plate D/Set 4 — Illumina / IDT, 100 indexes). Only applies when pool is not given.
poolNothe pool as text — one row per sample: `name<TAB>i7[<TAB>i5]`, or bare index sequences one per line, with or without a header. Rows that cannot be read are REPORTED with their line number, never dropped.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
metricNoerror model the distance guarantee is measured under — a pool safe under substitutions may be unsafe under indels. Values: hamming (Hamming (substitutions)), seqlev (Sequence-Levenshtein (indels)), levenshtein (Levenshtein).seqlev
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
i5_cyclesNoindex-2 read length from the run recipe. 0 = use the indexes' own length.
i7_cyclesNoindex-1 read length from the RUN RECIPE, when it differs from the index length — a 10 nt index read at 8 cycles is an 8 nt index for every purpose here. 0 = use the indexes' own length.
instrumentNowhich instrument the run is on. It decides the chemistry the color balance is judged under AND the orientation index 2 is read in — a pool balanced on a NovaSeq 6000 is not balanced on a NovaSeq X.NovaSeq X / X Plus
library_prepNowhich of Illumina's published hopping-rate classes applies. The check multiplies the published RANGE by what this pool can throw away, to report how much is unrecoverable — it never predicts a rate for your run. Values: patterned-examp (Patterned flow cell, ExAmp chemistry), truseq-pcr-free (TruSeq PCR-Free libraries).patterned-examp
required_distanceNothe minimum distance the pool is SUPPOSED to guarantee, if it was designed to one — the check says whether it does. 0 = report the distance without judging it. Advanced.

Output Schema

NameRequiredDescription
readsYesper index read: cycles, color-balance tier and the per-cycle channel census
checksYesevery check with its own result — a check with no input to run against reports SKIPPED, never passed
hoppingYesindex-hopping exposure: combinations possible against combinations in use, the removable share, and the undetectable swaps
samplesYeshow many samples were checked
skippedYesrows the parse could not read, each with its line number and the reason — these are usually WHY a check refused
verdictYesthe pool-level verdict: `ok`, `warning` or `fail`
failuresYeschecks that FAILED — a warn and a skip are each counted by their own status in `checks`, never folded in here
guaranteeYeshow many errors this pool can CORRECT and DETECT under the chosen metric — the number the whole check exists to establish
closestPairsYesthe pairs that get confused first

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it discloses which properties are evaluated, that hopping exposure is expressed as i7 x i5 combinations in use, and explicitly that it "never predicts a rate for your run" — a useful scope boundary. It does not describe the verdict output shape, but the output schema covers that.

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

Conciseness4/5

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

Front-loaded with the guiding question ("Will this pool actually sequence?") followed by a dense but purposeful enumeration of the checks, then inputs and a sibling contrast. Every clause earns its place, though the hopping-exposure sentence is long and nested, slightly taxing readability.

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

Completeness5/5

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

For a zero-required-parameter, read-only analysis tool with an output schema present, the description is complete: it explains what is analyzed, the two input modes, how the error model and instrument shape the verdict, and how it differs from the builder sibling. Return-value detail is rightly left to the output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including the pool-vs-kit mutual exclusivity ("Ignored when pool is given"). The description reinforces that both input paths exist but adds no syntax or format detail beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb (check) and resource (a pool of sample indexes) and enumerates exactly what verdicts it returns: duplicates, uniform length, distance guarantee vs claim, per-cycle color balance, index-2 orientation, and index-hopping exposure. It explicitly distinguishes itself from the sibling design_barcodes ("It CHECKS a pool; design_barcodes builds one"), so an agent can route correctly 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.

Usage Guidelines4/5

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

Names the alternative and the axis that separates them: check vs build, with design_barcodes as the builder counterpart. It also clarifies accepted inputs (a pasted list or a vendor kit by id). There is no explicit when-not or prerequisite guidance, so it falls just short of a full 5.

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

check_invariantsA
Read-only
Inspect

Decide whether a sequence is scientifically admissible: protein unchanged, forbidden restriction sites absent, reading frame intact, length/GC/CAI inside stated bounds. Every verdict names what broke, where, and the remedy. Run this after any design or optimisation step, and stop the chain when admissible is false — never report a designed sequence without it.

NameRequiredDescriptionDefault
tableNoNCBI translation table. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_gcNomaximum GC fraction (0-1).
min_gcNominimum GC fraction (0-1).
min_caiNominimum CAI (needs cai_organism). Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe sequence to judge — defaults to the open record.
gc_windowNojudge every window of this many bases instead of the whole sequence — a synthesis is rejected on a local GC peak, not on the mean. In bp. Advanced.
max_lengthNomaximum length [bp]. In bp. Advanced.
min_lengthNominimum length [bp]. In bp. Advanced.
cai_organismNohost for the codon-adaptation check, e.g. sce. Advanced.
forbid_sitesNoenzyme names that must not cut, e.g. BsaI, BsmBI.
require_stopNowith require_frame: the last codon must be a stop. Only applies when require_frame is true. Advanced.
require_frameNolength divisible by 3 and no premature stop.
require_startNowith require_frame: the first codon must be a start codon. Only applies when require_frame is true. Advanced.
preserve_protein_ofNothe ORIGINAL coding sequence (or its protein): the result must still translate to it.

Output Schema

NameRequiredDescription
failedYeshow many invariants did not hold
checkedYeshow many invariants were asked
summaryYesone line per failure: value, requirement, remedy
verdictsYesper-invariant verdicts, with breach coordinates
admissibleYesevery invariant was decided and held

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds genuinely new behavior beyond that: every verdict names what broke, where, and the remedy, and a false verdict is meant to halt the pipeline. It does not mention cost, speed, or size limits, keeping it short of 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.

Conciseness5/5

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

Three sentences, front-loaded with the admissibility semantics, then verdict behavior, then the workflow obligation. Every sentence carries distinct information and none is padding.

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

Completeness4/5

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

With an output schema present, the description is not obliged to explain return values, and for a 16-parameter nesting-heavy validator it covers purpose, verdict semantics, and workflow placement well. The one gap is that it never addresses how the many optional 'advanced' constraints default or interrelate, which an agent could want before wiring up parameters.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 16 parameters (including the advanced GC-window, CAI-organism and frame flags). The description only restates the check categories at a conceptual level and adds no syntax, defaults, or format detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description names a specific verb (decide/check) and resource (a sequence) and enumerates the exact admission criteria — protein preservation, forbidden restriction sites, frame, length/GC/CAI bounds — which maps tightly to this tool's parameter set and separates it from generic siblings like check_manufacturability or verify_construct. An agent knows precisely what class of question this tool answers.

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

Usage Guidelines4/5

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

It gives an explicit trigger ('run this after any design or optimisation step') plus a workflow rule ('stop the chain when admissible is false') and a default use ('never report a designed sequence without it'). That is clear when-to-use guidance, though it names no alternative tool for the cases where a lighter-weight check would do.

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

check_manufacturabilityA
Read-only
Inspect

Measure a sequence against what a NAMED synthesis vendor publishes it can make: length, average and windowed GC, homopolymer runs, tandem repeats, long repeats and hairpin-forming inverted repeats. Every threshold is the vendor's own, read from the vendor's own page with the date it was read, and every finding carries the span it is about so it can be drawn. It reports the limits that are MET as well as the ones exceeded, because a list of failures cannot tell a clean sequence from an unchecked one. It never predicts a synthesis outcome and never rules a sequence out: a vendor publishes what it supports, so being outside a published window is a conversation with the supplier, not a rejection.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
vendorNowhich vendor product to measure against. Each carries its own limits, and two vendors can honestly disagree about one sequence. Values: idt-gblocks (IDT gBlocks Gene Fragments), idt-eblocks (IDT eBlocks Gene Fragments), twist-clonal (Twist Bioscience Clonal Genes), twist-fragments (Twist Bioscience Gene Fragments).idt-gblocks
featureNomeasure a named feature of the open record instead of the whole thing — the insert you are about to order rather than the vector it sits in. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe sequence to measure. Leave unset to use the open record, or the current selection when there is one.

Output Schema

NameRequiredDescription
spansYesjust the spans of the exceeded limits, 0-based half-open, ready to draw on the map — the half of a finding a user cannot act on without
checkedYeshow many limits were graded. Read it beside `outside`: 0 of 4 and 0 of 7 are different answers, because vendors publish different numbers of limits
outsideYeshow many published limits this sequence exceeds — the number to branch a workflow on
profileYesthe vendor profile every verdict here was made against, including the page it was read from and the date — a threshold whose source is not stated is not checkable
readingYesthe report in words, generated from the findings: which limits are exceeded by how much, what could not be graded, and the standing qualification that published support is not a refusal policy
verdictYes`within` when every published limit is met, `outside` when any is exceeded. Not a prediction and not a refusal: it is whether the sequence sits inside the envelope the vendor publishes
findingsYesevery limit, met or not, with what this sequence measures, what the vendor publishes, and the span it is about where it has one
notGradedYeslimits the vendor publishes that this sequence could not be graded on, each with the reason. A 40 bp insert has no 50 bp GC window, and silence would make a shorter sequence look like a cleaner one
repeatScreensYesthe Synthesis Success Calculator's six published repeat-density screens (Halper, Hossain & Salis 2020), independent of vendor: each with its rule, whether it fires (null where it does not apply, as the 500 bp window under 1,000 bp), what was measured and the first span that tripped it. Rules from the literature, not a vendor's acceptance limits

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare a safe, read-only, closed-world read, but the description adds substantial non-obvious behavior: thresholds are the vendor's own, taken from the vendor's page with the read date, findings carry the span they refer to so they can be drawn, and passing limits are reported alongside failures so a clean sequence can be told from an unchecked one. This is exactly the kind of behavioral disclosure the annotations cannot supply.

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

Conciseness4/5

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

Four dense sentences, front-loaded with the measurement list and with each sentence carrying distinct content (what is measured, threshold provenance, reporting philosophy, limits of inference). Slightly verbose in places but nothing is filler.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and the description fully covers what is measured, the provenance of thresholds, why both passing and failing limits are reported, and what the result does not mean. Nothing an agent needs to invoke or interpret this tool correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents every parameter, including the vendor enum list and the vendor-disagreement caveat. The description reinforces the vendor provenance idea but adds little per-parameter meaning beyond what the schema states, so the baseline 3 is correct.

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

Purpose5/5

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

States a specific verb (measure) and resource (a sequence against a named synthesis vendor's published limits) and enumerates exactly what is checked: length, GC, homopolymer runs, tandem repeats, long repeats and hairpin-forming inverted repeats. An agent can distinguish this from neighbors like optimize_sequence or check_golden_gate_parts because the scope is vendor-published synthesis constraints.

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

Usage Guidelines4/5

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

Gives clear context for use (measuring the insert you are about to order) and explicit boundary guidance: it never predicts a synthesis outcome and never rules a sequence out, since being outside a published window is a supplier conversation. It does not name an alternative tool or state exclusions versus siblings, 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.

check_methylation_blockA
Read-only
Inspect

Whether the host's own methylation blocks the given enzymes ON THIS PLASMID, from REBASE's methylation-sensitivity tables localised onto your sites. The other term of the same reaction question find_star_sites answers. It is deliberately per-SITE and not per-enzyme: REBASE says Dam blocks ClaI, and pBR322's single ClaI site carries no overlapping GATC, so the enzyme-level warning does not apply there. An enzyme REBASE has never examined comes back examined: false, which is UNTESTED and never a clearance.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesenzymes to check — resolved against the bundled cut catalog (REBASE spellings; smaller than the REBASE dossier the editor shows). Left unset, the run uses your active enzyme collection.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
blockedYeshow many of the enzymes are blocked or impaired at at least one site HERE — branch on this rather than on the presence of a verdict, because a `cut` verdict is also a verdict
enzymesYesper enzyme: its REBASE recognition site, how many sites this molecule carries, whether REBASE has examined it, and one verdict row per methylase localised onto those sites
unexaminedYeshow many of the enzymes REBASE has NOT tested against any methylase
blockedEnzymesYesthe names of those enzymes, for a message that says which one to swap

TDQS

A4.2/5.0
Behavior5/5

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

With annotations already covering the safe read-only profile, the description adds substantial behavioral context: the check is deliberately per-site, REBASE enzyme-level warnings do not automatically apply, and `examined: false` means UNTESTED and never a clearance. These are critical nuances an agent could not infer from the schema or annotations.

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

Conciseness4/5

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

The purpose is front-loaded and the sentences are dense but purposeful, with the pBR322 example earning its place by clarifying the per-site distinction. It is slightly lengthy for a single check tool, but there is no wasted filler.

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

Completeness5/5

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

Given the output schema exists and annotations cover safety, the description provides the remaining necessary context: scope, the per-site nuance, and the interpretation caveat for untested enzymes. An agent has everything needed to invoke and interpret this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the `enzymes` and `_subject` parameters thoroughly. The description adds no additional parameter syntax or format details, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific check (methylation blocking of given enzymes on the plasmid) and distinguishes itself from the sibling `find_star_sites` as the complementary reaction term. The per-site vs per-enzyme clarification makes the exact scope unmistakable.

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

Usage Guidelines3/5

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

It names `find_star_sites` as the other term of the same reaction question, which implies the tools are used together, but it never gives explicit when-to-use, when-not-to-use, or prerequisite guidance. The relationship is helpful context but not a full usage instruction.

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

check_primer_specificityA
Read-only
Inspect

Check primer pairs for products off their template, the way NCBI Primer-BLAST does, and rank them by it: each distinct primer is searched against a sequence database at EMBL-EBI with short-query BLAST, hits are paired into products by Primer-BLAST's own mismatch rule, and the template is searched too so the record identical to it is recognized as the intended target. Pairs with no product elsewhere rank first, in the order given, then pairs not checked, then pairs with a named unintended product. Primer sequences and the template LEAVE THE MACHINE; the database is a collection, not an assembled genome, and cannot be filtered by organism.

NameRequiredDescriptionDefault
emailNoEBI requires a contact address on every submission (their abuse contact, not a login). Left empty, the one saved in any EMBL-EBI panel is used.
pairsNoseveral pairs to rank, one per line as `forward reverse` (whitespace or a comma between), in their design order. Taken instead of forward/reverse when given.
top_nNohow many of the pairs, from the top, to search. The rest rank as unchecked. At most 14, so the batch stays inside EMBL-EBI's 30 searches.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
forwardNoone pair's forward primer, 5'→3' (wire design_primers' `forward`).
reverseNothat pair's reverse primer, 5'→3' (wire design_primers' `reverse`).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
databaseNothe nucleotide database id, as the service names it (em_all, em_rel_hum…). Left empty, the service's OWN nucleotide default is used and reported back.
templateNothe sequence the pairs were designed on. Searched too: the database record identical to it is where the intended product lives. Left empty, the open record is used; with neither, every product counts as unintended and the result says so.

Output Schema

NameRequiredDescription
rankedYesevery pair in ranked order: its design rank, standing (specific, unchecked, non-specific), intended products and unintended products with subject, span, length and mismatches
forwardYesthe top-ranked pair's forward primer (wire into pcr_amplify)
reverseYesthe top-ranked pair's reverse primer
identicalYesdatabase records identical to the template, whose products are the intended ones
specificCountYespairs with no product off the template; wire into a $when to branch on "any specific pair"

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds genuinely non-obvious behavioral context: primer sequences and template leave the machine, the database is a collection rather than an assembled genome, it cannot be filtered by organism, and the exact ranking rule for results.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause and every sentence adds functional detail (pipeline, ranking, privacy, database limitation). It is dense and somewhat run-on, but no sentence is filler.

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

Completeness4/5

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

With an output schema present, return-format explanation is unnecessary, and the description covers the workflow, the empty-template fallback ('the result says so'), privacy, and database limits. For a 9-parameter tool with nested objects, this is largely sufficient, though per-parameter edge cases live only in the schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the mechanics that give meaning to `template` (searched so the identical record is recognized as the intended target) and to `top_n`/ranking (unchecked vs unintended-product pairs), clarifying parameter intent.

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

Purpose5/5

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

States a specific verb+resource ('Check primer pairs for products off their template') plus the exact behavior modeled ('the way NCBI Primer-BLAST does') and the output ordering. It clearly distinguishes itself from design tools and generic off-target/contamination scanners by describing the search-and-pair pipeline.

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

Usage Guidelines3/5

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

The Primer-BLAST reference implies the intended context, and the closing caveats (sequences leave the machine; database cannot be filtered by organism) shape when to use it. However, no alternative sibling (e.g. primer_check, search_off_targets, design_primer_pairs) is named, and no explicit 'use this when / not when' guidance is given.

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

check_rowsA
Read-only
Inspect

A QC gate over a TABLE: assert something about every row at once (every band inside a size window, no guide above an off-target score, at least three assays under a penalty). Fails the pipeline (so everything downstream skips) and names the rows that broke the rule.

NameRequiredDescriptionDefault
maxNoupper bound, inclusive. Only applies when operator is between.
minNolower bound, inclusive. Only applies when operator is between.
setNothe values the field must be one of (or none of). Only applies when operator is in or not_in.
textNothe text the field must contain. Only applies when operator is contains.
countNoN, for the counted requirements. Only applies when require is at_least or at_most or exactly.
fieldNowhich field of each row to test (e.g. `size`, `score`). Leave empty when the rows are plain numbers.
itemsYesthe rows to check. Wire a json/list output (bands, guides, assays, amplicons).
labelNowhat this gate is checking, in your words. It becomes the message when it fails.
valueNothe value to compare against. Only applies when operator is == or != or > or >= or < or <=.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
recordNooptional: the record this gate is guarding. It comes back out of `record` when the check passes, so the gate sits in the middle of a chain.
requireNowhat must hold across the table. Values: all (every row), any (at least one row), none (no row), at_least (at least N rows), at_most (at most N rows), exactly (exactly N rows).all
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
operatorNohow each row is compared. Values: == (equals), != (does not equal), > (greater than), >= (at least), < (less than), <= (at most), between (between (inclusive)), in (is one of), not_in (is none of), contains (contains text), is_true (is true), not_empty (is not empty).>=
report_onlyNoreport the verdict instead of stopping the run: wire `passed` (or `failed`) into another step's condition to choose a branch.

Output Schema

NameRequiredDescription
failedYesthe opposite verdict, so the ELSE arm of a branch needs no extra step. Only meaningful with `report_only` on
passedYeswhether the requirement held. As a gate this is true whenever it is read downstream; with `report_only` on it is the real verdict, for driving a branch
recordYesthe guarded record, unchanged. Wire it into the next node's $subject to make that step conditional
matchedYeshow many rows met the per-row condition
messageYeswhat was checked, in words
offendersYesthe rows that did NOT meet it: what to look at when the gate fails

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint/destructiveHint=false, but the description adds a genuinely non-obvious trait: a failed check halts the pipeline so everything downstream skips, and the failure message names the offending rows. This control-flow behavior is not derivable from the annotations, and the record passthrough expectation is also useful context.

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

Conciseness4/5

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

Three tightly packed sentences: the first defines the gate, the second gives illustrative predicates, the third states the failure semantics. The core purpose is front-loaded and nothing is wasted, though the parenthetical examples list is slightly long.

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

Completeness4/5

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

For a 15-parameter, nested-schema tool with an output schema present, the description supplies the essential mental model (row-set gate, fail-halts-pipeline, failing rows reported) without needing to restate return values. It could be more complete by noting the report_only alternative behavior, but overall it is sufficient to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 15 parameters including the operator/require enums and conditional min/max/set/text/value semantics. The description's predicate examples map loosely onto these concepts but add no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and scope: assert a predicate over every row of a table at once, with concrete examples (size window, off-target guide score, assay count). It clearly distinguishes this aggregate gate from a per-value check, though it never names a sibling like check_value, check_invariants, or filter_items.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: as a 'QC gate' it sits mid-pipeline and skips downstream steps on failure, and the record passthrough hints at chaining. There is no explicit when-to-use vs alternatives guidance (e.g. when to prefer check_rows over filter_items or summarize_rows), and no mention of the report_only branching mode in prose.

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

check_scorpion_stemA
Read-only
Inspect

A Scorpion probe's two melting temperatures, side by side: the stem-loop's own hairpin and the duplex the loop makes with its target on the amplicon. A Scorpion is a primer carrying a stem-loop probe on a non-amplifiable blocker (Whitcombe 1999), and it reports by the loop finding its target and pulling the stem apart - so the design question is a RELATION between those two structures, not a property of either. Returns both temperatures, their difference, the stem's GC, and a verdict against WHATEVER margin you pass. It does not apply a margin of its own authority: the widely-quoted 5-10 °C figure comes from one design tool's tech note and has no primary citation, so the default is labelled as that rule of thumb and every result says which margin produced its verdict.

NameRequiredDescriptionDefault
probeYesthe whole probe element, 5' stem arm + loop + 3' stem arm. The element is what folds, so it is what the structure engine is given - the loop alone would compute a hairpin the molecule does not have.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
marginNohow many °C the stem Tm must exceed the loop-target Tm for the verdict to pass. Yours to set: the 5-10 °C rule of thumb this defaults to the floor of is a design tool's, not a measured value from the primary literature. In °C.
targetYesthe loop's target on the amplicon, 5'->3'. This is the OTHER temperature: a Scorpion opens because the loop finds this, so it is the loop-target duplex that has to be stable, not the loop's own self-structure.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
conditionsNosalt, magnesium, dNTP and oligo concentrations plus the salt-correction method the stem Tm is measured in. Left unset it is filled from your reaction-conditions settings, and falls back to primer3's defaults when there are none. Advanced.
stem_lengthNohow many bases of the 5' end form the stem arm. Reported back rather than guessed. The two vendors disagree on the range - LGC Biosearch, who sell Scorpions, publish 5-7 nt and PremierBiosoft's design tool says 6-7 - so neither is enforced. In nt.

Output Schema

NameRequiredDescription
notesYeswhy a temperature is missing, in the words the panel shows. Empty when both were computed
stemTmYesmelting temperature of the probe element's own hairpin, °C - null when no stem forms
probeTmYesmelting temperature of the loop-target duplex, °C
differenceYesstemTm - probeTm, the quantity the design rule is about
clearsMarginYeswhether the difference clears the margin GIVEN - null when either temperature could not be computed
marginSourceYeswhere the margin came from, carried with the verdict so an unsourced rule of thumb is never mistaken for a measurement
stemGcPercentYesGC of the 5' stem arm - both vendors ask for a GC-rich stem

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and openWorldHint=false, but the description adds substantial context: what the result contains, that the verdict is computed against a caller-supplied margin, and a candid disclosure that the popular 5-10 °C rule has no primary citation and is labelled as a rule of thumb rather than enforced. That is exactly the kind of provenance and authority caveat an agent cannot get 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.

Conciseness4/5

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

Front-loaded with what is computed and why the relation matters, which is the right ordering. It is dense but earns most sentences; the closing restatement of the margin caveat partially duplicates the clause earlier in the same paragraph, costing a bit of tightness.

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

Completeness5/5

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

With an output schema present and 100% schema coverage, the description needn't explain return values, yet it still names them (both Tms, difference, stem GC, verdict). The chemistry background and the margin provenance are exactly the extra context this tool needs, so nothing an agent requires to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the margin parameter's schema text already carries the 'rule of thumb, not primary literature' caveat, so the description largely restates rather than extends parameter meaning. It does reinforce that the probe string must be the whole element and that target is the other temperature, but these are already documented in the schema.

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

Purpose5/5

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

States a concrete verb and resource (check a Scorpion probe's stem) and defines the computation precisely: two melting temperatures, their difference, the stem GC, and a verdict. It also distinguishes itself conceptually from single-Tm siblings by insisting the design question is 'a RELATION between those two structures, not a property of either', which is exactly the boundary against melting_temperature.

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

Usage Guidelines4/5

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

It gives clear context for when this tool applies: Scorpion probe design, where the loop-target duplex must open the stem. It never names an alternative sibling or states an explicit when-not condition, so the agent must infer the boundary with melting_temperature / scan_oligo_structure rather than being routed.

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

check_valueA
Read-only
Inspect

A QC gate. Compares a wired value against a threshold and PASSES or FAILS the pipeline there — every node downstream of a failed gate is skipped, so a run stops at the first check that does not hold. This is how a pipeline expresses 'only continue if the clone is right'.

NameRequiredDescriptionDefault
maxNoupper bound, inclusive. Only applies when operator is between.
minNolower bound, inclusive. Only applies when operator is between.
setNothe values the checked value must be one of (or none of), compared as text, so `1` matches 1. Only applies when operator is in or not_in.
textNothe text the value must contain. Only applies when operator is contains.
labelNowhat this gate is checking, in your words — it becomes the message when the gate fails (e.g. 'single EcoRI site').
valueYesthe value to check — wire a number (cut count, product size, tip count, Tm) or any output; a list is compared by its length.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
recordNooptional: the record this gate is guarding. It comes straight back out of the `record` output when the check passes, so the gate sits in the middle of a chain.
againstNooptional: compare against another step's value instead of the fixed threshold. When wired, this wins over `threshold`. Only applies when operator is == or != or > or >= or < or <=.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
operatorNohow to compare. Values: == (equals), != (does not equal), > (greater than), >= (at least), < (less than), <= (at most), between (between (inclusive)), in (is one of), not_in (is none of), contains (contains text), is_true (is true), not_empty (is not empty).>=
thresholdNothe value to compare against. Leave it unset and wire `against` instead to compare two steps. Only applies when operator is == or != or > or >= or < or <=.
report_onlyNoreport the verdict instead of stopping the run: wire `passed` (or `failed`) into another step's condition to choose a branch.
against_factorNomultiply the compared-against value by this first, so `at least twice the smallest band` is one gate rather than an arithmetic step. Only applies when operator is == or != or > or >= or < or <=.
against_offsetNothen add this, so `within 50 bp of the predicted size` is expressible against a computed value. Only applies when operator is == or != or > or >= or < or <=.

Output Schema

NameRequiredDescription
valueYesthe value that was checked, passed straight through so the gate can sit mid-chain
failedYesthe opposite verdict, so the ELSE arm of a branch needs no extra step. Only meaningful with `report_only` on
passedYeswhether the check held. As a gate this is true whenever it is read downstream, since a failure stops the run; with `report_only` on it is the real verdict, for driving a branch
recordYesthe guarded record, unchanged — wire it into the next node's $subject to make that step conditional on this check
messageYeswhat was compared, in words

TDQS

A4.2/5.0
Behavior4/5

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

With annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds genuinely useful non-obvious behavior: downstream nodes are skipped on failure and the run stops at the first failing check. It does not discuss what happens on the pass path beyond passing, though the output schema covers return values.

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

Conciseness5/5

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

Three sentences, front-loaded with the 'QC gate' label, zero filler, and each sentence adds a distinct fact (what it does, fail-fast scope, pipeline idiom).

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

Completeness4/5

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

For a 15-parameter gate with full schema coverage, existing annotations, and an output schema, the description covers the essential control-flow semantics an agent needs. The notable omission is that the report_only branch mode is never surfaced outside the schema, which is a material alternative use of the same tool.

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

Parameters3/5

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

Schema description coverage is 100% across all 15 parameters, so the schema already carries full parameter meaning including operator enums, min/max, against, and factors. The description adds only the conceptual notion of a 'wired value' and 'threshold', not syntax or parameter-level detail; baseline 3 is appropriate.

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

Purpose5/5

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

The description states a precise verb and resource — compares a wired value against a threshold and passes/fails the pipeline — and the 'QC gate' framing makes its role unmistakable. An agent can tell this is a control-flow assertion step rather than a data-transform sibling like filter_items or summarize_rows.

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

Usage Guidelines4/5

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

'This is how a pipeline expresses "only continue if the clone is right"' gives clear when-to-use context for gating a chain. It does not, however, name alternatives or the branching (report_only) mode as a distinct usage path, so guidance is clear but incomplete.

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

classify_dropletsA
Read-only
Inspect

ddPCR droplet amplitudes to populations. For TWO targets, a four-way classification — NN, NP, PN, PP — under any of THREE published methods that answer different questions and none of which is a fallback for another. grid applies eight fixed thresholds: reproducible and auditable, the only one that does not move when the data does, and the only one that needs someone to have chosen the numbers. kmeans clusters both channels at once and names the clusters by where they sit, so it adapts to the well, and it CANNOT abstain because k-means partitions everything. knn classifies against a well you have already labelled and abstains into Rain when the neighbour vote is weaker than a floor you set, so it is the only one that can decline per droplet. They disagree on the droplets between the populations, and that disagreement is the honest measure of how much an answer rests on the method rather than on the data. Distinct from gate_droplets, which asks whether a droplet is EMPTY per channel and ends in a concentration; this asks which of four populations it belongs to. For ONE to FOUR targets multiplexed by amplitude, ddPCRclust names up to sixteen populations from the primary clusters and reports each target's copies per droplet, by any of three first clusterings or their consensus: density places the primaries from density gates, samspectral from spectral clustering of a faithful sample, flowpeaks from the density peaks k-means clusters climb to, and ensemble (ddPCRclust's own default) runs all three and keeps the partition that agrees most with the others, with their mean corrected Rand index as the confidence. A plate of exports with ddPCRclust's run template is classified well by well and can be normalised to a constant control.

NameRequiredDescriptionDefault
kNofor `knn`: how many nearest labelled neighbours vote. Only applies when method is knn.
probNofor `knn`: the smallest winning share of the vote that counts as a call. Below it the droplet is `Rain`. 0 disables the floor. At k = 5 a bare 3-2 majority is 0.6, so any floor at or below 0.5 accepts every droplet the vote decided at all. Only applies when method is knn.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
ch1_nnNogrid: Ch1 below this and Ch2 below `ch2_nn` is NN. Only applies when method is grid.
ch1_npNogrid: Ch1 below this and Ch2 above `ch2_np` is NP. Only applies when method is grid.
ch1_pnNogrid: Ch1 above this and Ch2 below `ch2_pn` is PN. Only applies when method is grid.
ch1_ppNogrid: Ch1 above this and Ch2 above `ch2_pp` is PP. Only applies when method is grid.
ch2_nnNogrid: the Ch2 half of the NN box. Only applies when method is grid.
ch2_npNogrid: the Ch2 half of the NP box. Only applies when method is grid.
ch2_pnNogrid: the Ch2 half of the PN box. Only applies when method is grid.
ch2_ppNogrid: the Ch2 half of the PP box. Only applies when method is grid.
methodNowhich classifier. `grid` needs its eight thresholds to suit your assay; `kmeans` needs nothing and cannot abstain; `knn` needs `training` and is the only one that can leave a droplet unassigned; `density`, `samspectral`, `flowpeaks` and `ensemble` (ddPCRclust) are for one to four targets and name populations by marker number (`1`, `1+2`, ...); `ensemble` runs the other three and is the slowest.kmeans
markersNofor `density`: the well's four marker slots, comma-separated, as in ddPCRclust's run template. A name is a target the reaction carries; an EMPTY slot is one it does not, so `a,,c,d` is a three-target well whose cluster 2 is missing. The number of names is the number of targets. Only applies when method is density or samspectral or flowpeaks or ensemble.M1,M2,M3,M4
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
dropletsYesthe well to classify: two amplitude columns, `Ch1` then `Ch2`, one row per droplet. A header line is optional. This is the whole well, not a summary. For the ddPCRclust methods it may instead be a PLATE: each export as `# <file name>` then its CSV, separated by a line of `---`, the well id read from the file name (`..._B01_Amplitude.csv`).
sam_seedNofor `samspectral` and `ensemble`: R's `set.seed` before the run. SamSPECTRAL keeps the best of 1000 k-means starts drawn from it, and on a plate one stream runs through the wells in order, as `ddPCRclust()` does. Only applies when method is samspectral or ensemble.
templateNofor a PLATE under the ddPCRclust methods: ddPCRclust's run template (a `>name, channel1=..., channel2=..., description` line, then `Well,Sample type,# of markers,Marker 1..Marker 4`). Each well then takes its own row's markers instead of `markers`. Only applies when method is density or samspectral or flowpeaks or ensemble.
trainingNofor `knn` only: an already-labelled well, as `Ch1,Ch2,class` with class one of NN, NP, PN, PP or Rain. Rain IS a class here and not a rejection — a droplet can be assigned to it on the strength of its neighbours, separately from the probability floor below. Only applies when method is knn.
random_seedNofor `knn`: ties among equidistant neighbours, and among tied winning classes, are broken from this stream. On a well-separated plate it changes nothing; where droplets sit exactly between populations it does, and a deterministic tie-break would be stable and wrong. Only applies when method is knn.
sensitivityNofor `density`: how finely the initial cluster search resolves density peaks (its step is 0.02 / sensitivity³). Higher divides the data into more clusters, lower merges more. Only applies when method is density or samspectral or flowpeaks or ensemble.
distance_paramNofor `density`: the share of the path between two clusters within which rain goes to the LOWER one; the rest goes to the higher one. Only applies when method is density or samspectral or flowpeaks or ensemble.
constant_controlNofor a PLATE under the ddPCRclust methods: the marker that should read the same in every well. Every well's copies per droplet are multiplied by the control's highest value on the plate over its own, as `calculateCPDs(constantControl =)` does. Empty: no normalisation. Only applies when method is density or samspectral or flowpeaks or ensemble.

Output Schema

NameRequiredDescription
totalYesdroplets classified — the denominator the counts sum to
wellsYesfor a PLATE: every well's counts, copies per droplet, confidence and members, or the reason no member could partition it. `classes`, `counts` and `total` are empty for a plate
countsYesdroplets per class, which is what a copy-number read consumes next. Rain is reported separately and is never folded into a population
methodYeswhich classifier produced this. A classification without its method is not comparable with another, because the three disagree on the droplets between populations
paramsYesevery parameter the run used, defaults included: the thresholds, k and the floor each move the answer
centresYesfor `kmeans`: the final cluster centres with the name geometry gave each one; for `density`: the primary cluster centres, named by marker. Empty for the other methods, which have no centres
classesYesone label per droplet, in the order given: NN, NP, PN, PP, or Rain where the method abstained
membersYesfor the ddPCRclust methods: each first clustering that ran, with its population counts or the error that left it out of the consensus. `ensemble` is only as good as the members that agreed
confidenceYesfor the ddPCRclust methods: the mean corrected Rand index between the member partitions (1 when one member answered). Low means the three first clusterings disagree about this well
normalisedYesfor a PLATE with `constant_control`: every well's copies per droplet after scaling to the control's highest value on the plate, with each well's factor. Null without a control
copies_per_dropletYesfor the ddPCRclust methods on one well: each named marker's positive droplets (every population carrying it) and its copies per droplet, -ln(1 - positives / total). Empty for the two-target methods

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, destructiveHint false), yet the description adds substantial behavioral context beyond them: `kmeans` CANNOT abstain because it partitions everything, `knn` is the only method that can decline per droplet via the `Rain` floor, `grid` is the only one whose result moves with chosen numbers, `ensemble` is the slowest, and plates are classified well by well and can be normalised to a constant control. This is well past the lower bar set by annotations.

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

Conciseness4/5

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

Front-loaded with the core purpose and organized around method families with backticked parameter names, so it is scannable despite its length. The density is justified by 7 methods and 22 parameters, though a few clauses (e.g. the 'honest measure' aside) are rhetorical rather than operational.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and the description supplies the full decision context an agent needs: which methods need `training` or thresholds, which support plates, which support one-to-four targets, and how normalisation is triggered. Nothing required to call it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3, but the description adds meaning the schema does not: it frames `method` as a choice among methods that 'answer different questions and none of which is a fallback for another', explains that marker names vs empty slots encode target count, and clarifies plate/template interaction. It stops short of restating per-parameter syntax that the schema already carries.

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

Purpose5/5

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

States a specific verb and resource ('ddPCR droplet amplitudes to populations') and immediately enumerates the classification outputs (NN/NP/PN/PP) and the method families. It explicitly distinguishes itself from `gate_droplets` ('asks whether a droplet is EMPTY per channel and ends in a concentration; this asks which of four populations it belongs to'), so an agent can separate the two 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.

Usage Guidelines5/5

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

Gives explicit when-to-use guidance per method: `grid` for reproducible/auditable fixed thresholds, `kmeans` when nothing is known and abstention is unacceptable, `knn` when a labelled well exists and per-droplet abstention is wanted, and the ddPCRclust set for one-to-four targets. It also names the alternative tool (`gate_droplets`) and the condition that selects it.

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

classify_grammar_partA
Read-only
Inspect

Which Golden Braid / MoClo / Yeast ToolKit grammar, position and level the open plasmid represents (or null). Reads the record's own annotations, which is what lets an assembled transcription unit be recognised by its backbone half, and what lets a Level-0 module whose own backbone carries an extra site for the release enzyme be told from that backbone. Configured entry vectors are a Parts Bin concept and are NOT available here, so a TU sitting in a named acceptor is reported by its overhangs rather than by that acceptor's name.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
levelYesassembly level
spansYesfor a COMPOSITE position, the slots it occupies end to end (YTK Type 234 spans 2, 3 and 4); empty otherwise
grammarYesgrammar name, or empty when unclassified
isVectorYestrue when a part at this position is also the acceptor backbone for its level (YTK Type 8, 8a, 678)
positionYesposition name within the grammar
releaseCutsYeshow many times the release enzyme cut. 2 for a clean excise; 3 for a GoldenBraid Level-0 module, whose pUPD backbone carries its own site, so the backbone is released in two pieces and the insert is identified by carrying no backbone marker
releaseEnzymeYesenzyme that releases the part
classificationYesthe full classification (null when no grammar matches)

TDQS

A4/5.0
Behavior5/5

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

Annotations already establish read-only, non-destructive, closed-world behavior, but the description adds substantial domain-specific context: it reads the record's own annotations, recognizes assembled transcription units by backbone half, distinguishes Level-0 modules whose backbone carries an extra release-enzyme site, and explains how configured entry vectors are reported by overhangs rather than acceptor names. These are exactly the edge cases an agent needs to invoke and interpret the tool correctly.

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

Conciseness4/5

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

The description is front-loaded with the tool's output, then explains the annotation-reading mechanism and a key limitation. It is appropriately dense for a domain-specific bioinformatics tool, though the second sentence is long and could be tightened.

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

Completeness5/5

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

With an output schema present and annotations covering the safety profile, the description focuses on domain-specific nuance. It explains what the classifier reads, how assembled transcription units are recognized, and why configured entry vectors are not available, giving the agent enough context to call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the two parameters are already fully documented in the input schema. The description does not add parameter-specific syntax or format details beyond referring to 'the open plasmid' and 'the record's own annotations', making the baseline 3 appropriate.

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

Purpose4/5

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

The description states a specific classification output: which Golden Braid / MoClo / Yeast ToolKit grammar, position, and level the open plasmid represents. This clearly distinguishes the tool's function from generic annotation or assembly tools, but it does not explicitly contrast itself with any named sibling tool.

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

Usage Guidelines3/5

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

Usage is implied by the phrase 'the open plasmid represents' and by the note that configured entry vectors are not available. However, the description does not explicitly state when to use this tool versus alternatives such as check_golden_gate_parts or match_part_by_sequence, leaving context to inference.

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

cluster_moleculesA
Read-only
Inspect

Cluster or diversity-pick a list of small molecules on 1 − Tanimoto of Morgan radius-2 fingerprints: Butina sphere exclusion (RDKit ClusterData, optional reordering), MaxMin diversity picking (RDKit MaxMinPicker, seeded), or average linkage (UPGMA) cut into k clusters. Indices are 0-based.

NameRequiredDescriptionDefault
seedNoMaxMin: seed of the first pick, as RDKit's seed.
picksNoMaxMin: how many structures to pick.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
methodNothe clustering method. Values: butina (Butina (sphere exclusion)), maxmin (MaxMin diversity pick), average (Average linkage (UPGMA)).butina
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
clustersNoaverage linkage: how many clusters to cut the tree into.
moleculesYesthe structures: one SMILES or molfile per entry.
thresholdNoButina: neighbors within this distance (1 − Tanimoto), 0–1.
reorderingNoButina: recount unassigned neighbors after each cluster.

Output Schema

NameRequiredDescription
picksYesMaxMin: input indices in pick order
groupsYesButina and average linkage: clusters of input indices (Butina: centroid first)
unreadYesinput indices RDKit could not read, left out
summaryYesthe clustering in words, generated from this run

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds substantial behavioral context beyond that: the distance metric (1 − Tanimoto on Morgan radius-2 fingerprints), the three algorithms with RDKit implementation details, and the 0-based indexing. It does not cover error handling or return format, but the output schema covers return values and annotations cover safety.

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

Conciseness5/5

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

The description is a single dense but well-structured sentence that front-loads the operation and then lists the algorithms, followed by a brief note on indexing. Every clause carries technical information, and there is no redundant or filler text.

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

Completeness4/5

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

Given the 9 parameters, nested objects, and the existence of an output schema, the description supplies the key algorithmic context needed to invoke the tool. It does not explain every parameter or the format of the output, but those details are covered by the schema and output schema.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by specifying the fingerprint type (Morgan radius-2) and the distance definition (1 − Tanimoto), which are not captured in the parameter descriptions. It also notes 0-based indices, though that is primarily an output convention.

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

Purpose4/5

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

The description states a specific verb (cluster or diversity-pick) and resource (list of small molecules), plus the underlying distance metric. It does not explicitly name or differentiate from sibling tools like compare_molecules or map_chemical_space, so it stops 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.

Usage Guidelines2/5

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

The description explains what the tool does but gives no guidance on when to choose it over alternatives or any prerequisites. Method names are listed, but those are parameter options, not tool-selection guidance.

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

codon_optimalityA
Read-only
Inspect

Frequency of optimal codons (Fop, Ikemura 1981) for an in-frame CDS against a real codon-usage table: what share of its codons are the ones a highly-expressed gene in that host would use. Where CAI scores how CLOSE each codon is to its family's best, Fop scores only whether it IS one of the best, which makes it comparable across genes of different amino-acid composition. Name a table this project holds in table, or one of the bundled hosts in host.

NameRequiredDescriptionDefault
hostNoone of the three codon-usage tables bundled with the app. Only applies when table is not given.E. coli K-12
tableNoa codon-usage table this project holds, BY NAME, as the Codon Usage panel lists it — any organism. Takes precedence over `host`. This is the way to pass a table you fetched or built; `host` is only the three tables bundled with the app.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe coding sequence, in frame (a length that is not a multiple of 3 is refused with the reason). Leave it empty to score the open record.
thresholdNoIkemura's optimality cutoff: a codon counts as optimal at this share of its family's most-used codon. 0.8 is the convention, not a measurement, and the right value is host-dependent.

Output Schema

NameRequiredDescription
fopYesfrequency of optimal codons, 0-1
reportYesthe full readout, including which host table answered
scoredYescodons that carried a call — stops and unevidenced families are excluded from both halves
nonOptimalYeshow many codons are NOT optimal (the honest denominator beside fop)
optimalCodonsYessize of the optimal set the reference defines

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare a safe read operation (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description still adds behavioral context: that table takes precedence over host, that host is limited to three bundled tables, and that the threshold convention is host-dependent and not a fixed measurement.

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

Conciseness4/5

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

Front-loaded with the definition, then a comparison clause, then the parameter-selection sentence. Every sentence carries information, though the CAI comparison is slightly elaborate for a tool that needs to be picked quickly.

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

Completeness5/5

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

With annotations covering the safety profile and an output schema covering return values, the description only needs to establish purpose, metric semantics, and input selection — all present. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and both the threshold semantics and the table/host precedence are already spelled out in the schema. The description restates the table/host choice but adds no syntax or format detail beyond structured fields, so the baseline 3 applies.

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

Purpose5/5

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

States a specific metric (Fop, Ikemura 1981), the exact input (an in-frame CDS) and the reference (a real codon-usage table). It explicitly distinguishes itself from CAI by contrasting 'how CLOSE' vs 'whether it IS one of the best', so an agent can tell it apart from the codon-usage siblings.

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

Usage Guidelines4/5

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

Conveys the condition that favors Fop over CAI (comparability across genes of differing amino-acid composition) and explains how to select a table via `table` vs the bundled `host` with precedence. It stops short of naming an alternative tool or stating explicit exclusions, but the selection context is clear.

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

codon_table_fetchA
Read-only
Inspect

Fetch a real codon-usage table for an organism and save it into this project, so later steps can score against it by name. NCBI builds the table by counting codons in the annotated CDS of a RefSeq assembly (the same counting the Codon Usage panel does, with the assembly and CDS count in the provenance); the Kazusa mirror serves a published table for an organism the mirror covers. The table LEAVES NOTHING but takes a network round-trip. Hand the saved name to codon_usage_analysis or codon_optimality in table.

NameRequiredDescriptionDefault
modeNowhich CDS set to count. `heg` uses the highly-expressed-gene set, which is what CAI and Fop reference tables are conventionally built from; `genome` counts every annotated CDS, which describes the organism's average gene rather than its best-expressed one. Values: heg (Highly-expressed genes — the CAI/Fop convention), genome (Whole genome — every annotated CDS). Only applies when source is ncbi.heg
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceNowhich register to build the table from. `ncbi` counts the CDS of a RefSeq assembly and covers any organism with one; `kazusa` serves a published table and covers only the organisms its mirror bundles. Values: ncbi (NCBI RefSeq — counted from annotated CDS, any organism), kazusa (Kazusa/CUTG mirror — published table, bundled organisms only).ncbi
save_asNothe name to save the table under, as `table` on the other codon tools will spell it. Defaults to the resolved organism plus the basis, which is what the panel names it.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
coverageNohow much of a multi-replicon assembly to download. `complete` takes every replicon; `budgeted` takes the largest ones that fit a memory budget and SAYS which it used. The panel defaults to complete and falls back when the browser cannot hold the whole thing. Values: complete (Complete assembly), budgeted (Budgeted — largest replicons that fit). Only applies when source is ncbi.complete
organismYesthe organism: a scientific name ("Saccharomyces cerevisiae") or an NCBI taxonomy id ("4932"). Resolved live against NCBI — no allow-list (§1 r4) — and the assembly it picks comes back in `report.builtFrom`.

Output Schema

NameRequiredDescription
cdsYeshow many CDS the table was counted from — the reference-set size, and the number a thin table is thin by. Absent on a register that publishes no counts
gc3YesGC at the third codon position (%), the usage fingerprint. NCBI only; absent elsewhere
tableYesthe saved name — wire this straight into `table` on codon_usage_analysis or codon_optimality
codonsYestotal codons counted, the weight behind every frequency. ABSENT when the register publishes frequencies rather than counts (the Kazusa mirror does) — never 0, which would be a number you could quote
reportYesthe full provenance: register, resolved organism, the identifier the table was built from, and any coverage fallback
organismYesthe organism as the register resolved it, which may be more specific than asked

TDQS

A4.1/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing a network round-trip, that nothing is persisted outside the project ('LEAVES NOTHING'), live resolution against NCBI with no allow-list, and that assembly/CDS provenance comes back in report.builtFrom. The 'LEAVES NOTHING' phrasing is terse and slightly cryptic about what exactly is or isn't written.

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

Conciseness4/5

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

Front-loads purpose in the first clause and packs sourcing, cost and downstream routing into one dense paragraph with no filler. Minor cost: the elliptical 'LEAVES NOTHING' and the parenthetical aside about the Codon Usage panel make it slightly harder to parse than it needs to be.

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

Completeness4/5

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

For a network-fetching tool with an output schema and read-only/open-world annotations, the description covers sourcing tradeoffs, cost, naming and downstream consumption. It leaves the exact failure behavior (unresolvable organism, missing Kazusa entry) unstated, which would matter for a live-lookup tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents mode, source, coverage, save_as and organism semantics. The description reinforces only the naming handoff to `table` and provenance output, adding little parameter-level meaning beyond structured data.

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

Purpose5/5

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

States a specific verb, resource and side effect: 'Fetch a real codon-usage table for an organism and save it into this project.' It also names the downstream consumers (codon_usage_analysis, codon_optimality) so the tool is distinguishable from siblings that merely score against a table.

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

Usage Guidelines4/5

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

Explains the two sourcing paths and their coverage (NCBI for any organism with a RefSeq assembly, Kazusa only for bundled organisms), which effectively tells the agent when to pick each. It stops short of explicit when-not-to-use guidance or listing prerequisites beyond the provenance note.

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

codon_usage_analysisB
Read-only
Inspect

Codon-usage analysis of an in-frame CDS: CAI / expression stats, GC, and every rare-codon occurrence for the chosen organism (pydna port), plus the two bias measures that need NO reference table — ENC (Wright 1990) and RCBS (Roymondal 2009), which are therefore computable for any organism.

NameRequiredDescriptionDefault
tableNoscore CAI and rare codons against a codon-usage table this project holds, BY NAME, as the Codon Usage panel lists it — any organism, not just the two pydna curates. Takes precedence over `organism`, and switches the rare-codon call from pydna's curated list to `rare_threshold`. Leave unset for the curated pydna report, which is the only arm carrying start/stop weights and the N-end half-life.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
featureNoscore this annotated CDS or gene by NAME instead of the selection (the panel's "A CDS / feature…" mode). Its own strand is used unless `reverse` says otherwise.
reverseNoread the region as the reverse complement. Leave unset to take the strand from the annotation when the selection is exactly an annotated CDS or gene, which is what the panel does.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
organismNoreference organism for CAI weights + rare codons. Only some organisms carry CAI weights; the rest still get the rare-codon scan + GC.sce
enc_pairsNocount codon PAIRS rather than single codons for ENC (k-mer 2) — bias in the junctions rather than in the codons.
rcbs_meanNohow the per-codon RCBS weights are averaged. Roymondal 2009 uses the geometric mean. Values: geometric (Geometric (Roymondal 2009)), arithmetic (Arithmetic).geometric
rare_thresholdNoa codon is rare when its relative adaptiveness w = f/f_max falls below this. 0.30 is GenScript GenRCA's CFD cutoff, a convention rather than a measurement, so retune it per host. Only applies when table is set.
rcbs_directionalNoRCBS weights taken as max(observed/expected, expected/observed), so under-use counts as bias too rather than only over-use.
enc_bg_correctionNocorrect ENC for the sequence's own base composition (Novembre 2002). Off is Wright's 1990 ENC, which reads GC-rich genes as more biased than they are.

Output Schema

NameRequiredDescription
gcYesGC fraction (0–1)
caiYesCodon Adaptation Index, or null when nothing could be scored — check `caiAvailable` before comparing it, and `referenceTable` before comparing two runs
encYeseffective number of codons, 20 (one per residue) to 61 (uniform) — needs no reference table
rcbsYesrelative codon bias vs the sequence's own base composition; 0 = as predicted — needs no reference table
codonsYesnumber of codons
regionYeswhat was actually measured — the selection when there is one, otherwise the whole record, naming the STRAND and where it came from
reportYesthe full codon report
codonMapYeshow often each of the 64 codons occurs in the measured region, laid out as the genetic-code chart: rows are the first two bases, columns the third
rareHitsYesevery rare-codon occurrence with its position
rareBasisYes`curated` (pydna's published low-usage list for this organism — `rare_threshold` did not apply) or `threshold` (relative adaptiveness below `rare_threshold`). Rare counts from the two are different claims and do not compare
caiAvailableYeswhether a CAI could be computed at all. FALSE means `cai` is null because there was no reference to score against, NOT that adaptation is poor
rareFractionYesfraction of codons that are rare (0–1)
strandSourceYes`explicit` (you passed `reverse`), `feature` (taken from the annotation the selection matches) or `default` (forwards, nothing said otherwise)
referenceTableYesthe project table CAI was scored against, or empty when the curated pydna organism answered

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this as a safe, read-only, non-destructive local operation. The description adds useful context such as the requirement for an in-frame CDS and the fact that ENC/RCBS are computable without a reference table, but it does not disclose failure modes, validation constraints, or performance characteristics.

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

Conciseness4/5

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

The description is a single dense sentence that is front-loaded with the core purpose. Every clause contributes information, though the heavy use of em dashes and parentheticals makes it less scannable than ideal.

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

Completeness4/5

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

For a read-only analysis tool with an output schema and 100% parameter documentation, the description provides enough domain context to understand what is computed and the key input constraint (in-frame CDS). It is slightly incomplete on usage guidance, but the structured fields carry the rest.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 11 parameters in detail. The description mentions the chosen organism and the role of reference tables, but it adds no parameter-specific syntax or behavior beyond what the schema provides.

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

Purpose4/5

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

The description clearly states the resource (an in-frame CDS) and the specific outputs (CAI, expression stats, GC, rare-codon occurrences, ENC, RCBS). It differentiates itself partly by noting measures that need no reference table, but it does not explicitly distinguish itself from nearby siblings like codon_optimality or codon_usage_distance.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance or comparison to alternative tools such as codon_optimality, codon_usage_distance, or discover_codon_outliers. Usage is only implied by the description of what the tool computes.

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

codon_usage_distanceA
Read-only
Inspect

How this region's codon usage compares with the record's OTHER genes (CUFS, Diament, Pinter & Tuller 2014). Every other codon score grades one sequence against a reference TABLE; this one grades two sequences against each other, so it stays available for an organism no authority covers. Answers 'does the gene I inserted use codons like the rest of this construct'.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
featureNoscore this annotated CDS or gene by NAME instead of the selection (the panel's "A CDS / feature…" mode). Its own strand is used unless `reverse` says otherwise.
reverseNoread the region as the reverse complement. Leave unset to take the strand from the annotation when the selection is exactly an annotated CDS or gene, which is what the panel does.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
synonymousNonormalise each amino acid's codons to sum to 1 (synCUFS), so what remains is the synonymous choice alone. Off compares all 64 codon frequencies, which also reflects amino-acid composition.

Output Schema

NameRequiredDescription
regionYeswhat was actually scored, naming the STRAND and where it came from — a reverse-strand gene read forwards is a wrong answer, not a missing one
ceilingYesthe largest distance this run could have produced, for the mode it ran in — read a distance against THIS, never against a constant
nearestYesthe feature whose codon usage is closest to the scored region
skippedYesfeatures that were NOT compared and why — a feature too short for the statistic is reported, never dropped
comparedYeshow many features were compared
furthestYesthe feature whose codon usage is least like the scored region — the odd one out
neighboursYesevery other coding feature with its CUFS distance, nearest first — name, span, codons compared and distance
synonymousYeswhether amino-acid composition was normalised away — the same column of figures means a different thing under each
strandSourceYes`explicit` (you passed `reverse`), `feature` (taken from the annotation the selection matches) or `default` (forwards, nothing said otherwise)
nearestDistanceYesits distance. 0 would mean an identical codon distribution; the maximum depends on the mode and is reported as `ceiling` beside it — sqrt(2 ln 2) = 1.177 for the plain form, sqrt(2 ln 2 F) = 5.396 for the synonymous one, which normalises each amino acid separately

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, destructiveHint false, and openWorldHint false, so safety behavior is covered. The description adds the algorithmic basis (CUFS, Diament et al. 2014) and the key distinction that it grades two sequences against each other rather than one sequence against a reference table, which is useful behavioral context beyond 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.

Conciseness5/5

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

The description is three tightly written sentences with no waste. It front-loads the core comparison and then explains the differentiator and use case, so every sentence earns its place.

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

Completeness4/5

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

An output schema exists, annotations cover safety, and the schema fully documents parameters. The description explains the comparison and its differentiator, though it leaves the prerequisite that the record must contain other genes for the comparison to be meaningful implicit rather than explicit.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters in detail. The description does not add parameter-specific meaning beyond the schema's own explanations, which is the expected baseline when the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific comparison: how the region's codon usage compares with the record's OTHER genes, explicitly contrasting this with other codon scores that grade against a reference table. An agent can distinguish it from siblings like codon_optimality or codon_usage_analysis without opening their schemas.

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

Usage Guidelines4/5

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

It gives a clear use case ('does the gene I inserted use codons like the rest of this construct') and contrasts the tool with reference-table-based codon scores, explaining why it remains available for organisms no authority covers. It does not name a specific sibling alternative or an explicit when-not-to-use condition, but the contrast provides strong contextual routing.

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

compare_antibodiesB
Read-only
Inspect

Several antibodies side by side: each record numbered by ANARCI, its heavy or its light variable domains aligned column by column by their numbering (a column is one scheme position, so nothing is re-aligned and an insertion is its own column), the CDR of every column under the chosen definition, how many columns agree, and the same properties read off each V domain: length, mass, isoelectric point, net charge, GRAVY, ε280 and the net charge of its CDRs. The alignment is abnumber's Chain.align, graded against it over every chain of ANARCI's PDB benchmark; the properties against Biopython ProtParam.

NameRequiredDescriptionDefault
pHNothe pH the net charge and the CDR charge are reported at.
chainNowhich variable domains to align: heavy, or light (kappa and lambda together). Values: heavy (Heavy), light (Light (kappa and lambda)).light
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
antibodiesNothe antibody chains to compare: wire several upstream records here, or list library documents or protein sequences.
definitionNothe CDR definition, numbered in its own scheme (North in Chothia's). Values: imgt (IMGT), kabat (Kabat), chothia (Chothia), north (North).kabat
include_subjectNoalso compare the open record.

Output Schema

NameRequiredDescription
rowsYesone gapped row per aligned chain, `{ name, aligned }`, the shape the alignment tools read
chainsYesper chain: name, record, chain type, and its V domain's length, molecularWeight (Da), isoelectricPoint, chargeAtPH, gravy, extinction (reduced and cystines) and cdrCharge
refusedYesrecords that gave no chain of the class, each with its reason
regionsYesthe region of each column under the definition: FR1, CDR1 … FR4
alignmentYesthe alignment as abnumber prints it: rows, identity lines, and the CDRs marked ^ (Vernier °, under Kabat)
identicalYescolumns where every chain holds the same residue
mutationsYescolumns holding more than one residue (a gap counts as one)
positionsYesthe scheme position of each column (`82A`)

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare the safe read-only, closed-world profile, so the bar is lower. The description still adds real behavioral context: it names the underlying algorithms (ANARCI numbering, abnumber's Chain.align graded against ANARCI's PDB benchmark, Biopython ProtParam) and discloses that insertions get their own column rather than being re-aligned. That is genuinely useful beyond the 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.

Conciseness3/5

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

The content is information-dense and largely on-topic, but it is delivered as one sprawling sentence that interleaves output format, algorithm provenance, and property lists without front-loading the core action. The clauses mostly earn their place, yet the run-on structure hurts scanability.

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

Completeness4/5

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

For a 7-parameter, nested-schema tool with an output schema present, the definition is largely complete: it conveys the comparison model, the column/insertion semantics, and the derived properties, and annotations cover safety. The gap is the absence of any guidance on how this differs from sibling comparison/numbering tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only marginal meaning: the definition parameter's role is implied by 'the CDR of every column under the chosen definition' and pH is implied by 'the net charge of its CDRs', but nothing is added for chain, antibodies, _subject, _files, or include_subject beyond what the schema already states.

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

Purpose4/5

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

States a specific verb and resource (compare several antibodies side by side) and enumerates the concrete artifacts produced: per-column numbering, CDR columns, agreement counts, and per-domain properties. It is clearly a multi-antibody alignment/comparison tool. It does not, however, name or distinguish itself from near-siblings such as alignment_agreement, number_antibody, or antibody_position_frequencies.

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

Usage Guidelines2/5

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

The description explains what is produced but never states when to choose this over alternatives. With siblings like alignment_agreement and number_antibody in the same family, no routing guidance is given, and the default chain=light / definition=kabat context is left for the schema to carry. An agent gets no explicit when/when-not.

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

compare_constructionsA
Read-only
Inspect

Align two constructs' build procedures step by step, in order — was this built the same way as that? Works across formats: a build received as a SnapGene binary and the same build received as an OpenCloning strategy align, because each step's identity is derived from the reaction and its parameters rather than assigned.

NameRequiredDescriptionDefault
keyNowhat to align on: `abstract` is the PROCEDURE (the command with its molecules abstracted away, so the same method on different DNA still matches); `processId` is the EXACT recorded operation, identical only when the very same step ran on the very same molecules.abstract
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
againstYesFile id or name of the construct to compare against, in the same project.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNoFile id or name for THIS side. The focused document when omitted.

Output Schema

NameRequiredDescription
rowsYesthe whole aligned history, row by row: shared, only-here, or only-there
sharedYessteps both procedures have, in the same order
similarityYesshared steps as a percentage of the alignment

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive=false, so the safety profile is covered; the description adds genuinely useful behavioral context — mixed-format inputs still align because step identity is derived from the reaction and its parameters. It does not describe output shape, but an output schema exists, so that gap is minor.

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

Conciseness5/5

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

One front-loaded imperative sentence followed by a single supporting clause about cross-format behavior; nothing is redundant or padding. Appropriate size for a tool whose structured fields already carry the details.

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

Completeness4/5

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

With annotations, 100% schema coverage, and an output schema, the description covers what an agent needs before calling: what is compared, in what order, and why formats don't matter. Slightly incomplete in not hinting what a failed/mismatched alignment means for interpreting results.

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

Parameters3/5

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

Schema description coverage is 100% and the `key` enum is already fully explained in the schema, so the description is not required to carry parameter meaning. It reinforces the format-independence rationale that motivates `_files`/`_subject`, but adds no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource — 'align two constructs' build procedures step by step, in order' — plus a plain-language gloss ('was this built the same way as that?'). That is clearly distinct from sequence-level siblings, though it never names an alternative such as compare_molecules or get_construction_history to draw the boundary explicitly.

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

Usage Guidelines3/5

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

The rhetorical question implies the use case (did these two constructs follow the same build route), but there is no explicit when-to-use/when-not-to-use guidance and no routing to related tools. An agent must infer that this is a procedure comparison rather than a sequence comparison.

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

compare_moleculesA
Read-only
Inspect

How similar two small molecules are: Tanimoto under six RDKit fingerprints (Morgan/ECFP4, atom pair, topological torsion, RDKit path, pattern, MACCS), every DataStructs metric (Tanimoto, Dice, cosine, Sokal, Russell, Rogot-Goldberg, all-bit, Kulczynski, McConnaughey, asymmetric, Braun-Blanquet, on-bit, Tversky) on the chosen one, and count-based Tanimoto, Dice and Tversky on Morgan counts. The first molecule is the query.

NameRequiredDescriptionDefault
otherYesthe structure to compare it with: SMILES or a molfile.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculeYesthe query structure: SMILES or a molfile.
tversky_aNoTversky's weight on bits only the query has, 0–1.
tversky_bNoTversky's weight on bits only the other has, 0–1.
fingerprintNothe fingerprint every metric is read on. Values: morgan (Morgan (ECFP4)), atomPair (Atom pair), torsion (Topological torsion), path (RDKit path), pattern (Pattern), maccs (MACCS keys).morgan

Output Schema

NameRequiredDescription
metricsYesevery metric on the chosen fingerprint, keyed Tanimoto, Dice, Cosine, Sokal, Russel, RogotGoldberg, AllBit, Kulczynski, McConnaughey, Asymmetric, BraunBlanquet, OnBit, Tversky
summaryYesthe comparison in words, generated from this run
count_similarityYesTanimoto, Dice and Tversky on unfolded Morgan radius-2 counts
tanimoto_by_fingerprintYesper fingerprint: kind, length, bits set in each molecule, bits in common, Tanimoto

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description goes beyond that by disclosing the full scope of work performed (which fingerprints, which metric families, count-based variants), which tells the agent this is an expensive multi-metric computation rather than a single score. No contradictions.

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

Conciseness4/5

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

Front-loaded with the core purpose in the first clause, then supporting detail; there are no wasted sentences. The exhaustive parenthetical listing all DataStructs metric names is mildly redundant with the preceding 'every DataStructs metric', but it does set expectations for output volume.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the schema/annotations cover parameters and safety. The description supplies the computational semantics an agent needs (fingerprints, metric families, query ordering), leaving only usage-routing guidance absent.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that all metrics are read on the fingerprint chosen by the `fingerprint` parameter and that Tversky weights apply, clarifying the consequence of that enum choice. It also states the query/other ordering relationship between the two required molecule params.

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

Purpose5/5

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

Opens with a specific verb+resource ('How similar two small molecules are') and then enumerates the exact computation surface: six RDKit fingerprints plus the DataStructs metric family. This clearly separates it from siblings like cluster_molecules, matched_molecular_pairs, or search_molecule_library, which operate over libraries rather than a single pair.

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

Usage Guidelines3/5

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

Usage is implied by the description: it is a pairwise comparator, and 'The first molecule is the query' establishes argument roles. However, it never states when to prefer this over cluster_molecules or search_molecule_library, nor any exclusion or prerequisite. Guidance is present but must be inferred.

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

compare_reads_to_referenceA
Read-only
Inspect

Compare a SET of sequencing reads against one reference in ONE shared frame: align every read to the reference, vote a consensus column by column, and report the positions where the reads differ from it, each with the change it makes to the protein. This is the whole-plate answer that grading reads one at a time cannot give — a variant is accepted only when every covering read agrees, so a single bad call does not become a mutation. Reads arrive as records or bases; the reference is the record this step runs on.

NameRequiredDescriptionDefault
readsNothe reads to compare — wire a batch of trace RECORDS in (their names come with them, and the per-read table is keyed by name), wire plain sequences, or name project documents.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
end_phredNoend trimming: the read becomes readable where three consecutive bases reach this score, and everything outside is masked. A Sanger read is unreliable at both ends by construction, which is why the ends are trimmed by RUN rather than per base. Only applies when quality_filter is true.
min_phredNomask any single base below this phred score. Only applies when quality_filter is true.
genetic_codeNoNCBI genetic-code table id, used to say what a variant does to the protein of a CDS on the reference. Advanced.
quality_filterNomask low-quality bases before the vote. Off by default, deliberately: a comparison shows what the FILES say before it shows what a filter says.

Output Schema

NameRequiredDescription
gapsYesstretches of the reference no read covers, as 1-based inclusive runs. A clean comparison over 60% of a construct is not a verified construct, and this is the half that says so
recordYesthe consensus as a linear record, ready for any downstream step
perReadYeseach read's own coverage, identity and substitution / deletion / insertion counts, plus how often it disagrees with the accepted consensus — the row that says WHICH read is the problem
acceptedYeshow many of those the vote accepted — every covering read agreed
cautionsYesevery caution this comparison raises, each naming its own subject: uncovered stretches, reads that reach across only part of the frame, reads that dissent from the accepted consensus, insertions the reads could not resolve, mixed peaks
variantsYesone row per column where a read differs from the reference: its position, the reference base, the voted base, whether the vote ACCEPTED it, the coverage behind it and the consequence for the protein
consensusYesthe voted consensus as a sequence, gaps and unresolved insertions removed — the sequence to hand on
conclusionYesthe run's headline in one sentence, generated from THIS result and identical to the words the panel shows
derivationYesthe chain behind the numbers: what identity was measured over (and that an indel does not lower it), the unanimity rule, how one frame came out of N pairwise alignments, the quality gate, the genetic code and the inputs
coveragePctYeshow much of the reference any read covers at all
identityPctYesof the covered columns, how many match the reference
alignmentFigureYesthe reference and every read in the shared frame, 80 columns around the first ACCEPTED change (else the first difference, else the start), shaded by column identity; draw_alignment draws any other window of `alignedReads`

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description discloses meaningful behavior: it aligns every read, votes column by column, and accepts a variant only when every covering read agrees. That consensus logic is behavioral context that annotations and schema do not provide.

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

Conciseness5/5

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

The description is front-loaded with the core action and then adds the key consensus rationale and input shape in two compact follow-up sentences. Every sentence contributes useful information without repetition or filler.

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

Completeness5/5

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

Given the existing output schema, annotations, and full schema description coverage, the description covers what the tool does, how consensus works, and what inputs look like. No essential calling information is missing for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter meanings are already well documented. The description adds only the high-level note that reads arrive as records or bases and the reference is the record being operated on, which largely duplicates schema text rather than adding new parameter semantics.

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

Purpose5/5

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

The description states a specific verb and resource: comparing a set of sequencing reads against one reference, aligning every read, voting a consensus, and reporting protein-level differences. It also distinguishes this whole-plate consensus approach from grading reads one at a time, making its role 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.

Usage Guidelines4/5

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

The description provides clear context for when to use it: when the whole set must be considered together so a variant is accepted only when every covering read agrees. It stops short of naming explicit alternative tools or stating when not to use it, but the comparison to per-read grading is a strong usage signal.

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

compare_treesA
Read-only
Inspect

Compare trees over the same taxa: the Robinson-Foulds distance between two of them, and the consensus of any number. Two methods disagreeing is a result about the data, so the distance and the shared topology are reported together.

NameRequiredDescriptionDefault
modeNohow strict the consensus is: strict keeps only clades in EVERY tree; majority keeps those above the cutoff. Values: majority (Majority-rule), strict (Strict).majority
treesYestwo or more trees in Newick (NEXUS, PhyloXML and NeXML pastes are sniffed too) — wire `newick` outputs here.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
cutoffNothe fraction of trees a clade must appear in for a majority consensus. Only applies when mode is majority.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sharedTaxaOnlyNoprune every tree to the taxa they ALL share before comparing, instead of refusing a mismatch. The numbers then describe the pruned trees, and pruning can only remove or merge splits, so the distance is a lower bound on the disagreement between the trees as given.

Output Schema

NameRequiredDescription
rfYesRobinson-Foulds distance between the first two trees (absent for one tree)
consensusYesthe consensus tree, in Newick
distancesYesevery distance the comparison computes, not just RF
treeCountYeshow many trees went into the consensus
normalizedYesthe same distance as a fraction of its maximum, 0 = identical topology, 1 = share nothing
prunedTaxaYesunder `sharedTaxaOnly`: the labels dropped from each tree, so a comparison over a smaller set can never be read as one over the whole
comparedTaxaYeshow many taxa the distances were computed over — under `sharedTaxaOnly` this is the shared set, which is smaller than either tree

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered and the description need not restate it. The description adds one useful behavioral note — that the distance and the shared topology are reported together, framing disagreement as a data result rather than an error. Beyond that it discloses nothing further about behavior, so with the lowered bar a 3 is appropriate.

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

Conciseness4/5

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

Two tight sentences with the core operation front-loaded: distance and consensus come first. The second sentence is a conceptual remark about interpreting disagreement, which is defensible but leans slightly editorial rather than operational. Minimal waste overall.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and it correctly leaves output semantics largely to structured fields. Annotations cover the safety profile and 100% schema coverage documents all parameters. For a 6-parameter tool with nested objects the description is adequate, though it could say more about the mismatch-refusal default that sharedTaxaOnly toggles.

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

Parameters3/5

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

Schema description coverage is 100%, so mode, cutoff, trees, _files, _subject and sharedTaxaOnly are all fully documented in the schema itself. The description's mention of 'any number' of trees and 'same taxa' only loosely maps to the trees/sharedTaxaOnly parameters and adds no syntax or format detail. Baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (compare) and resource (trees) and pins down exactly what is computed: the Robinson-Foulds distance between two trees and the consensus of any number. This is far more precise than a generic 'compare' and lets an agent know the output. It does not, however, explicitly distinguish itself from overlapping siblings like discover_tree_incongruence or tree_statistics, 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.

Usage Guidelines3/5

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

'over the same taxa' states a prerequisite, and 'two of them, and the consensus of any number' implies the tool handles 2+ trees. But there is no explicit when-to-use guidance and no routing to alternatives such as discover_tree_incongruence or build_tree, leaving the agent to infer boundaries. Usage is implied rather than spelled out.

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

consensus_from_tracesA
Read-only
Inspect

Merge one or two Sanger reads into a consensus with the ported SeqTrace caller. With two reads (typically a forward and a reverse of the same amplicon) an IUPAC ambiguity code marks a position the two DISAGREE about; with one read there is nothing to disagree with and a code marks a position where no single base cleared the confidence bar. Returns the consensus, how many positions are ambiguous, and how many the consensus's own trimming stage cut from the ends.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNothe first read: its name or its project file id.
min_confNothe confidence a base must clear to be called rather than written as a code. SeqTrace range 1-61.
algorithmNoBayesian converts each base's Phred to a posterior and combines the reads position by position; legacy lets the higher-confidence base win each position outright. They are different callers, not settings of one.Bayesian
trim_windowNohow many consensus bases the quality-trim mean is taken over. Wider is more forgiving of a single bad base and slower to stop at a genuinely bad end. Advanced.
primer_matchNothe fraction of a primer that must match for it to be cut. 1 is exact; lower tolerates the mismatches a real read carries at its noisy start. Only applies when trim_primers is true. Advanced.
quality_trimNotrim the consensus's own ends by quality. Note this is the stage primer trimming lives inside, so primer trimming does nothing without it.
trim_primersNocut the primers off the consensus ends. It runs INSIDE the quality-trim stage, so turning it on turns that stage on too.
trim_end_gapsNoalso cut the gap runs at each end, where only one read reached. With two reads those stretches are single-read consensus and read as agreement when they are not. Advanced.
trim_min_goodNohow many of those bases must clear `min_conf` for the window to be kept. It cannot exceed `trim_window` and is clamped to it rather than refused. Advanced.
forward_primerNothe forward primer to cut, 5→3. Only applies when trim_primers is true.
reverse_primerNothe reverse primer to cut, 5→3. Only applies when trim_primers is true.
second_documentNothe second read, usually the reverse of the same amplicon. Leave empty for a single-read consensus, which is a different question and is reported as one.
reverse_complement_secondNoreverse-complement the second read before merging. A reverse read of the same amplicon needs this; two forward reads do not.

Output Schema

NameRequiredDescription
lengthYesits length in bases
readingYesthe same sentence the editor shows for this run, generated from it
consensusYesthe consensus, compact (no spacers) — what you would export or align
readsUsedYeshow many reads went in. With 1, an ambiguity is low confidence; with 2, it is disagreement
trimmedFromEndsYespositions the consensus's own trimming stage removed
ambiguousPositionsYespositions written as an IUPAC code. Wire it into a gate — but read `readsUsed` first, because the number means two different things

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: what an IUPAC code means in each mode, that trimming cuts bases from the consensus ends, and the interdependency between primer trimming and the quality-trim stage.

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

Conciseness5/5

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

Three front-loaded sentences with no filler: the operation, the mode-dependent meaning of ambiguity codes, and the return summary. Every sentence carries information an agent needs.

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

Completeness4/5

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

An output schema exists, so return values need not be enumerated, and the description still summarizes them. For a 15-parameter tool with nested objects the schema carries the parameter burden, and the description covers the mode semantics and trimming dependencies well; only explicit sibling routing is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself documents every parameter in depth (defaults, ranges, dependencies). The description adds little parameter-specific syntax beyond restating the ambiguity/trimming concepts, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Merge one or two Sanger reads into a consensus') and names the underlying caller (ported SeqTrace). The single-vs-two-read explanation makes the operation's scope unambiguous and separates it from single-trace callers like call_bases_from_trace.

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

Usage Guidelines4/5

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

Gives clear context for when each mode applies: two reads for a forward/reverse amplicon pair, one read when there is nothing to disagree with, and explicitly tells the agent to leave second_document empty for a single-read consensus. It does not, however, name alternative sibling tools to prefer for other trace tasks.

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

convert_mass_molesA
Read-only
Inspect

Convert a mass of a molecule to an amount in moles and a number of molecules, or an amount back to a mass. The weight is the open record's own, computed from its sequence (both strands of a double-stranded record under its topology, a protein from its residues), or one you give.

NameRequiredDescriptionDefault
massNothe mass to convert. Leave it or `amount` empty: the empty one is calculated.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
amountNothe amount in moles to convert. Leave it or `mass` empty.
strandsNowhich strands of the open record to weigh. From the record weighs both strands of DNA and the one strand of an RNA (U and no T); choose one strand for an oligo. Values: record (From the record), double (Both strands), single (One strand). Only applies when molecular_weight is not given.record
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
mass_unitNothe unit of the mass, given or solved.ng
amount_unitNothe unit of the amount, given or solved.pmol
molecular_weightNog/mol. Leave empty to weigh the open record from its sequence; give it for a molecule that is not open. In g/mol. Advanced.

Output Schema

NameRequiredDescription
massYesthe mass, in its unit
amountYesthe amount in moles, in its unit
copiesYesnumber of molecules
molecularWeightYesthe weight used

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds real value by disclosing how the molecular weight is derived (both strands of a double-stranded record under its topology, protein from residues, or a supplied g/mol). It does not mention limits or that the result also includes a molecule count beyond the opening clause, but the output schema exists to carry that.

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

Conciseness4/5

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

Front-loaded with the conversion direction in the first clause, and only two sentences total. The second sentence is a run-on with two parentheticals that slows parsing, but every clause carries information about the weight source.

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

Completeness4/5

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

With full schema coverage, an output schema and safe-read annotations, the description supplies the one non-obvious thing an agent needs — where the molecular weight comes from and how strand choice affects it. Only the units/defaults (ng in, pmol out) are left entirely to the schema, which is acceptable.

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

Parameters3/5

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

Schema description coverage is 100%, so all eight parameters are already documented at source (including the mass/amount 'leave one empty' rule and the strand enum). The description confirms the strands/topology semantics and the 'or one you give' override for molecular_weight but adds little that the schema does not already say, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource — converting a molecule's mass to moles/number of molecules and back — with the bidirectional behavior made explicit. No sibling is named, but the sibling list contains no competing mass/moles converter, so there is little confusion risk. Clear and specific, just not sibling-differentiated.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the description explains that the weight comes from the open record or one you provide, which hints at the two calling contexts, but it never says when to prefer this over e.g. peptide_mass or protein_properties, nor any exclusions. The 'leave one of mass/amount empty' rule is only in the schema, not the description.

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

copy_number_allele_splitA
Read-only
Inspect

Read an Affymetrix array result's own allele-specific copy number: for each segment the major and minor allele counts (1+1, 2+0, 0+0), what they mean (balanced, allelic imbalance, loss of heterozygosity placed against the sample's own ploidy, homozygous deletion), and ASCAT's whole-genome summary over them (LOH fraction, homozygous deletions, modal allele state, whole-genome doubling, genomic instability). OncoScan results state a split when the aberrant-cell fraction was determined; the tool says why when a file states none.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one, and it refuses rather than guessing when there are several.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
estimated_onlyNoreport only the segments the producer split. Default false: an unestimated segment is listed as such, which is a different answer from its absence.

Output Schema

NameRequiredDescription
metricsYesASCAT 3.2.0's ascat.metrics() profile columns over the estimated segments, unrounded: n_segs, segs_size, size_odd_segments, size_intermediate_segments, homdel_segs, homdel_largest, homdel_size, homdel_fraction, LOH (autosomal fraction), mode_minA, mode_majA, WGD (0, 1, '1+' or null) and GI (null when WGD is). Null when nothing is estimated
summaryYeshow many segments carry a split, how many are LOH (and copy-neutral), homozygous deletions, imbalanced and balanced, and the autosomal LOH fraction
segmentsYesone entry per segment: chromosome (the file's own name, X not 24), start and end (the file's coordinates), markers, estimated, major and minor (null where not estimated), raw_a and raw_b (the producer's raw nA/nB, null where empty), total_cn (the producer's total, fractional where it made no integer call), state (not-estimated, homozygous-deletion, loh, balanced, imbalanced) and relative_to_ploidy (below, equal, above, for LOH only, null when no ploidy is stated)
provenanceYeswhich file answered, the data set the split was read from, how many segments it holds and how many are estimated, and the producer's own fit: ploidy and aberrant-cell fraction as the chip summary states them

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare it as a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), yet the description goes further: it enumerates the allele states it reports (1+1, 2+0, 0+0) with their interpretations and notes that the tool explains why no split is stated when a file reports none. That last point is a genuine behavioral trait beyond the annotations, though return formatting and pagination are left to the output schema.

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

Conciseness4/5

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

Two sentences, front-loaded with what is read before the edge-case behavior about missing splits. The first sentence is long and stacks several parenthetical glosses, but every clause defines a distinct reported quantity rather than padding.

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

Completeness4/5

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

An output schema exists, so the description need not explain return values, yet it still names the key outputs; annotations cover the safety profile. The remaining gap is routing guidance against the other copy_number_* siblings, which the description never addresses.

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

Parameters3/5

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

Schema description coverage is 100%: the file fallback rule, the _files/_subject project record, and the estimated_only semantics are all documented in the schema itself. The description adds contextual framing (ploidy-relative interpretation, 'estimated' splits) but no parameter syntax or constraints beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a precise verb and resource: reading an Affymetrix array result's allele-specific copy number, with major/minor allele counts and the ASCAT whole-genome summary spelled out. That granularity (allele split, LOH fraction, whole-genome doubling) is specific enough to separate it from copy_number_loh, copy_number_segment and copy_number_regions, which cover different slices of copy-number data.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Context is implied rather than stated: the tool is for Affymetrix/OncoScan array results and for callers who need the allele-specific split rather than a generic copy-number read. There is no explicit when-to-use versus copy_number_loh or copy_number_segment, and no stated prerequisites, so the agent must infer the selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_number_compareA
Read-only
Inspect

Join two Affymetrix copy-number samples' own calls and report which events they share and which only one of them carries: for every pair, the chromosome both files resolved to, the kind, the bases they overlap and their reciprocal overlap; and separately each sample's unshared calls. Kind is part of the match, so a gain in one sample and a loss in the other at one locus are reported as two unshared calls rather than as agreement. Chromosomes only one file indexes are listed apart and are NOT reported as differences: nothing about them was compared. NO OVERLAP THRESHOLD IS APPLIED — every pair comes back with its numbers, and which agreement counts as agreement is a laboratory's judgement.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project is the first sample, by name. Unset, it is the project's only one — and it refuses rather than guessing when there is more than one.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
compareYeswhich copy-number file in this project is the second sample, by name — the same parameter copy_number_read.compare takes. Required: there is no default second sample, and a file compared with itself answers one question twice.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
data_setNowhich data set of the first file to scan, by name. Unset is the file's FIRST, which is what the panel opens on.
min_basesNoignore any call spanning fewer bases than this, on BOTH sides. Default 0, for the same reason as min_markers. Note a single-marker call spans 0 bases.
min_markersNoignore any call shorter than this many markers, on BOTH sides. The default counts everything either file called, because a reporting floor belongs to the laboratory and not to this tool — and it is the same floor copy_number_findings applies.
compare_data_setNowhich data set of the second file to scan. Unset is that file's FIRST.

Output Schema

NameRequiredDescription
sharedYesone entry per PAIR of overlapping calls of the same kind: chrom (the name BOTH files resolved to, never either file's raw chromosome number), kind, a and b (the two calls, each with its own start, end, marker count and value), overlapBases, and reciprocalOverlap — the SMALLER of the two containment fractions, so a focal call inside a whole-arm one scores low rather than 100%. A call that overlaps several on the other side appears once per pair, which is how the reference application's own overlap table behaves
summaryYeshow many of each sample's own calls are shared and in how many overlapping pairs (a call can overlap several on the other side, so the two differ), how many each carries alone, over how many chromosomes both files index, and which floors were applied
comparedYesthe chromosome names both files index — what this comparison actually covers, so a caller can tell a clean result from a narrow one
provenanceYeswhich two files and data sets answered, how each side’s calls were read (the producer’s own segment calls, or the per-marker state columns), how many calls each side contributed, and the floors applied to both
only_in_fileYesthe first sample’s calls that no call of the same kind in the second sample overlaps, on a chromosome BOTH files index — each with the chromosome name and the call itself. This is the half a reader cannot get by reading two result sets one after the other
only_in_compareYesthe second sample’s calls that no call of the same kind in the first sample overlaps, on a chromosome both files index
unmatched_chromosomesYeschromosomes only one of the two files indexes, each with which side carries it. Their calls were NOT compared and are NOT in only_in_file or only_in_compare: a targeted array that does not carry Y says nothing about Y in the other sample

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral value beyond that: a gain in one sample and a loss in the other yields two unshared calls, chromosomes indexed by only one file are listed separately and are not counted as differences, and no overlap threshold is applied. Error/auth behavior is not addressed, but the comparison semantics are unusually well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and scope lead the paragraph, followed by matching semantics, then the non-comparison caveat, then the no-threshold point. It is dense and long for a single description, but each clause carries information; there is little outright waste other than the slightly verbose phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value explanation is a bonus rather than a requirement, and annotations carry the safety profile. The description covers what an agent needs to interpret the comparison result correctly, but leaves the relation to sibling tools (copy_number_findings, copy_number_segment, etc.) unstated, which is the one remaining gap for an 8-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains file, compare, data_set, min_bases, min_markers and compare_data_set in detail. The description does not add per-parameter meaning; its 'NO OVERLAP THRESHOLD IS APPLIED' line reinforces the min_bases/min_markers defaults but nothing beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (join/compare) and resource (two Affymetrix copy-number samples' own calls) and immediately scopes the output to shared vs unshared events. The matching semantics ('kind is part of the match') distinguish it from generic comparison siblings like copy_number_findings or copy_number_regions without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when this tool is the right one: comparing two CNV call sets, with explicit rules for how calls pair and how single-file chromosomes are handled. It does not, however, name an alternative sibling or state when NOT to use it (e.g. when a caller-level tool is wanted), so it stops short of full 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.

copy_number_findingsA
Read-only
Inspect

Scan every indexed chromosome of an Affymetrix copy-number container and report what the file itself called: gains, losses and stretches of homozygosity, with their positions, marker counts and spans, plus a per-chromosome summary. Reads the file's own CNState and LOH columns and infers nothing — for a second opinion computed from the log2 ratios, use copy_number_segment. A chromosome that was read and carries nothing is reported as clean, which is a different answer from one that could not be read. NO GENOME BUILD IS ASSUMED: positions are the file's own.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one — and it refuses rather than guessing when there is more than one.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
data_setNowhich data set to scan, by name. Unset is the file's FIRST, which is what the panel opens on.
min_basesNoignore any run spanning fewer bases than this. Default 0, for the same reason as min_markers. Note a single-marker run spans 0 bases.
min_markersNoignore any run shorter than this many markers. The default counts everything the file called, including single markers, because a reporting floor belongs to the laboratory and not to this tool.

Output Schema

NameRequiredDescription
bedYesthe same calls as a UCSC BED track, ready for IGV, the UCSC browser or bedtools: 0-based half-open, one row per finding, colored by kind through itemRgb, with the producer's confidence in the score column (0 where the file states none) and the genome build on the `track db=` line when the container names one. The JSON `findings` above carry the file's own inclusive marker positions; this output is the same calls converted once, by the same writer the Export panel uses
sourceYeswhich route answered: `segments` means the producer's own segment calls, which is what a CYCHP written by ChAS carries; `markers` means the per-marker state columns, which is what a CNCHP carries. Different provenance for the same question, so a pipeline comparing two files can tell which it got
summaryYeswhat was found, across how many chromosomes and markers
findingsYesevery gain, loss and stretch of homozygosity, as the file called them: kind, chromosome, startPosition, endPosition, markerCount, bases, and — where the file states them — state and stateLabel (the copy-number state; absent on an LOH finding, which is not a copy-number call), confidence (the producer's own, 0..1) and mixture (mosaic fraction, signed as the file signs it, so a mosaic loss and a mosaic gain stay distinguishable). No cytoband: naming a band needs a genome build, and this node is given none
chromosomesYesper chromosome: markers read, and the counts and spans of gains, losses and LOH runs

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/destructiveHint already covering the safety profile, the description adds substantive behavior beyond annotations: it reads the file's own CNState and LOH columns and 'infers nothing', it declares NO GENOME BUILD IS ASSUMED so positions are file-native coordinates, and it distinguishes 'clean' chromosomes from unreadable ones. These are exactly the interpretive caveats 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and its outputs before the caveats, and every sentence carries real information (outputs, alt-tool routing, clean-vs-unreadable, coordinate semantics). The prose is dense and em-dash heavy, which slightly taxes scanning, but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex read-only tool with nested objects and an output schema, the definition covers everything the agent needs: scope, default resolution behavior, the alternative tool, edge-case semantics (clean vs unreadable), and coordinate interpretation. Return-format detail is correctly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so file, _files, _subject, data_set, min_bases and min_markers are already documented in the schema, including the rationale for the permissive defaults. The description adds only indirect interpretive context (that position semantics depend on the file's own build) and no syntax or constraint detail beyond the schema, so the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Scan every indexed chromosome of an Affymetrix copy-number container') and enumerates exactly what it reports: gains, losses, homozygosity stretches, positions, marker counts, spans, plus a per-chromosome summary. It explicitly distinguishes itself from the nearest sibling by naming copy_number_segment as the ratio-based alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear selection rule for the main confusable sibling ('for a second opinion computed from the log2 ratios, use copy_number_segment') and explains why defaults are permissive (reporting floor belongs to the lab). It does not address the other copy-number siblings (copy_number_loh, copy_number_regions, copy_number_mosaicism), so alternatives coverage is partial rather than exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_number_lohA
Read-only
Inspect

Recompute loss of heterozygosity from an Affymetrix array's own per-marker genotype calls, rather than reading the runs the producer wrote: APT's window method, with the false-positive rate and the assumed genotyping error rate as parameters. Answers where a sample has lost one parental haplotype, including where copy number is normal. Needs a container that states genotype calls — an OncoScan OSCHP does; a CytoScan CYCHP states the set with no rows, and this says so rather than answering empty.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one — and it refuses rather than guessing when there are several.
alphaNoAPT's `lohCN_alpha`: the false-positive rate the heterozygote cutoff is set against. Raising it makes the window narrower and the method readier to call a run, which is the knob to move when comparing against another caller.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
error_rateNoAPT's `lohCN_errorrate`: the assumed genotyping error rate, which is what makes a heterozygote inside a homozygous stretch explicable. It is RE-ESTIMATED from the sample's own no-call rate when the genotype confidences reach the no-call threshold, and the output says which value was actually used.
min_genomic_spanNoAPT's `lohCN_minGenomicSpan`: a called run narrower than this many base pairs is dropped. The default is the vendor's 1,000,000.

Output Schema

NameRequiredDescription
runsYesone entry per called run: chromosome (the file's own label), start, end, markers (how many genotyped markers it spans). Coordinates are the marker positions the container states, on whatever assembly it names
windowYeswhat the parameters solved to for THIS sample: markerCount (the window width), hetCutoff (heterozygotes at or above which the window is not LOH), and errorRate (the value used, which differs from the parameter when it was re-estimated from the no-call rate)
summaryYeshow many runs of loss of heterozygosity were called, over how many chromosomes and how many megabases, and how many markers the method could read
accountingYesmarkers (genotype calls read), noCalls (dropped before anything else), evaluated, inSegmentsTooShort (markers in a stretch shorter than the window, left UNCALLED rather than called clear), beyondLastChromosome, segments. The five ways a marker can be spent sum to markers
provenanceYeswhich data set the genotype calls came from, which one the coordinates came from, how many were paired, and the parameters in force. The pairing is checked against the marker each call names, never trusted

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish a safe read (readOnlyHint, destructiveHint=false), and the description still adds real behavior: the tool refuses rather than returning an empty answer on a no-row CYCHP, error_rate is re-estimated from the sample's no-call rate with the used value reported in output, and narrow runs are dropped.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the recompute-vs-read distinction are front-loaded, and every clause carries information. It is prose-heavy with several subordinate clauses, so it is dense rather than tight, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description still flags what the output reports (the actual error rate used) plus input-validity behavior. For a read-only analysis tool with nested project parameters, nothing an agent needs in order to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter (alpha, error_rate, min_genomic_span, file) already carries rich APT-keyword documentation, so the baseline 3 applies. The description adds only a modest framing of alpha and error_rate as the method's two knobs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Recompute loss of heterozygosity') and the exact data source ('an Affymetrix array's own per-marker genotype calls'), immediately contrasting it with the producer-written runs. An agent can distinguish it from copy_number_regions or copy_number_findings 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear applicability condition: the input container must state genotype calls, with OncoScan OSCHP as a working case and CytoScan CYCHP as a refusing case. It also frames the recompute-vs-read tradeoff, though it never names a sibling tool an agent should pick instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_number_mosaicismA
Read-only
Inspect

Estimate which mosaic fraction class each region of one chromosome is closest to, as Affymetrix Power Tools computes it. A mosaic event is present in only some of the sample's cells, so its log2 ratio sits between the levels a clonal change would produce. Every segment comes back with the class it was assigned (±0.3, ±0.5, ±0.7, ±1.0), the fraction that class is NAMED for, its confidence, and whether the method CALLED it as mosaic — a whole-copy change of exactly ±1.0 is clonal and is reported with call 0, which is the vendor's own test. The mixture values are class labels, not measured cell fractions: there is no published method for this estimate and no independent implementation to grade it against, so it is reported as APT computes it and the provenance output carries that sentence. A chromosome with fewer than 4,330 markers is refused by name rather than answered empty, because the method's own boundary adjustments would delete every call.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one — and it refuses rather than guessing when there is more than one.
graphNowhich graph column to read. Unset is the first log2-ratio column, the same rule copy_number_segment applies. A column that is not a log2 ratio is refused rather than smoothed: a copy-number STATE column is already someone's answer.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
data_setNowhich data set to read, by name. Unset is the file's FIRST, which is what the panel opens on.
chromosomeNowhich chromosome, as the file numbers them (1-22, then 23=X, 24=Y, 25=MT — the file's own convention). Unset is the first the index carries. A chromosome too short for the method is refused with the count it has and the ones that would run.
mosaic_bandwidthNothe smoothing window in markers — APT's own `marker-bandwidth`. A mosaic event is a shallow wide elevation, so this is what decides how wide 'wide' is. The default is the vendor's shipped value.
mosaic_confidence_windowNothe running-median window used to score a segment, in markers — APT's own `confidence-window`. The default is the vendor's shipped value.

Output Schema

NameRequiredDescription
calledYesthe subset of segments with call === 1 — the mosaic events themselves, separated out so a pipeline does not have to know the vendor’s clonal test to find them
summaryYeshow many segments the method produced, how many of them it CALLED as mosaic, which classes they fall in, and which chromosome and column answered
segmentsYesevery segment: startPosition and endPosition in bases, startIndex and endIndex in markers, mixture (the class as APT numbers it), mixtureValue (the fraction that class is NAMED for — a label, not a measurement), confidence, and call, which is 1 only for a segment the method calls mosaic. A reader looking for mosaic events wants call === 1
provenanceYeswhich file, data set, chromosome and column answered, how many markers were read, the windows and the eight class boundaries the run used, and the sentence this estimate must be presented with — verbatim from the engine, never paraphrased

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/destructive/openWorld annotations, the description discloses genuinely non-obvious behavior: chromosomes under 4,330 markers are refused by name, a whole-copy ±1.0 change is clonal and returned with call 0, and the class labels are not measured cell fractions (no independent implementation exists to grade them). These are exactly the caveats an agent would otherwise discover only after a surprising result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the opening sentence, and the subsequent sentences each carry distinct information (class semantics, clonal rule, provenance caveat, refusal). It is somewhat dense and verbose, with parenthetical asides, but it is not padded or repetitive. Slightly over-long for a single tool, keeping it at 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not enumerate return fields, yet it still characterizes the outputs (class, named fraction, confidence, call) at a useful level. Combined with the refusal rule and provenance disclaimer, an agent has enough to call and interpret the tool correctly, though the lack of when-to-use-vs-siblings guidance leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (file, graph, chromosome, mosaic_bandwidth, mosaic_confidence_window, etc.) is already fully documented in the schema. The description adds only indirect meaning — the 4,330-marker refusal threshold and the notion of a shallow wide elevation motivating the bandwidth — without explaining any parameter's syntax or format beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource: assigning each region of one chromosome to a mosaic fraction class as APT computes it. It also explains the underlying phenomenon (a mosaic event's log2 ratio sits between clonal levels) and the call convention, making the tool's function unambiguous. It stops short of naming any sibling (e.g. copy_number_segment, copy_number_loh) as an alternative, so it earns a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: the description explains that mosaic events produce intermediate log2 ratios, from which an agent can infer when this tool is relevant. It never says when to prefer this over copy_number_segment, copy_number_loh, or the other copy-number siblings, and offers no explicit exclusions beyond the short-chromosome refusal. Adequate but with a clear routing gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_number_readA
Read-only
Inspect

Read an Affymetrix copy-number container (CNCHP/CYCHP/OSCHP/CHP) in this project and say what is in it: the algorithm and array that produced it, its data sets and their graphs, the per-chromosome marker index the file carries, and — for one chromosome — each graph decimated to a summary with its real range. Values the analysis left undefined are counted and reported, never plotted as zero. NO GENOME BUILD IS ASSUMED: positions are the file's own, because these files name an annotation release and not an assembly.

NameRequiredDescriptionDefault
endNolast base of the region to summarize. Unset is the chromosome's last marker. Given with `start`, the graphs are decimated over that window instead of the whole chromosome: the same thing the panel's Region field does.
binsNohow many buckets to decimate each graph into. The panel uses one per pixel column of its plot; a smaller number here is a coarser summary of the same data.
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one — and it refuses rather than guessing when there is more than one.
startNofirst base of the region to summarize, on the selected chromosome. Unset is the chromosome's first marker. Clamped to what the file's markers actually cover, because a locus is a position in the assembly and an array's coverage stops where it stops.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
compareNoa SECOND copy-number file in this project, by name, to read over the SAME chromosome, the same window and the same buckets — the overlay the canvas draws, as numbers. Its chromosome is matched by LABEL and not by number, because each file states its own numbering, and its graphs are matched by COLUMN NAME, so a file carrying a different set of them reports which it has rather than answering from whatever sits at that position. Unset, nothing of a second file is read.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
data_setNowhich data set to read, by name. Unset is the file's FIRST, which is what the panel opens on.
chromosomeNowhich chromosome's markers to summarize, as THE FILE numbers them. The autosomes are 1-22; which numbers are X and Y is stated by the file's own header (`xChromosome`/`yChromosome`, which both bundled arrays give as 24 and 25) and read from it rather than assumed. Unset is the first the index carries, which is what the panel selects.

Output Schema

NameRequiredDescription
lanesYesthe tracks above drawn as the canvas draws them: one lane per graph over the same window, the bucket min-max envelope with its mean over it, the compared sample's envelope behind it where `compare` named a second file, and the marker lane underneath, because a gap in the probes is not a deletion. Null when no graph was decimated — no chromosome was selected, or none of its markers carried a value
tracksYesthe selected chromosome decimated: per graph, its fitted range, the bucket minima/maxima/means, and how many markers carried no value
summaryYesthe file in one sentence, generated from this run — the panel's own facts
comparedYesnull unless `compare` named a second file. Otherwise: file, dataSet, chromosomeLabel and chromosomeInThatFile (matched by LABEL, so the number may differ), markersOnChromosome and markersInWindow (ITS markers — a different array covers a chromosome at a different density), bins and binnedOver (the SAME buckets and the same extent as `tracks`, which is what makes the two comparable at a coordinate), and tracks: one entry per graph of the PRIMARY file, each with that graph's buckets in the compared sample, or `absent` naming the column the compared file does not carry. A `refused` field instead of the rest means the comparison could not be made and says why — never an empty list, which would read as the two samples agreeing
data_setsYesevery data set, with its row count, its columns and which of them are graphs
provenanceYesthe header chain the file states about itself: algorithm, version, array, and the annotation release it was analyzed against
chromosomesYesthe file's OWN per-chromosome index — start row, marker count and display flag each. This is what makes a chromosome one ranged read rather than a whole-file scan. A CNCHP states it in the data set's parameters and a CYCHP as rows in Chromosomes/Summary; both are read, and `index_source` says which one answered
index_sourceYeswhere the per-chromosome index above came from, because the two container shapes keep it in different places and a reader comparing two files should not have to guess which

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, non-destructive, and closed-world behavior, but the description adds substantial non-obvious context: undefined values are counted and reported rather than plotted as zero, no genome build is assumed, positions are the file's own, and it refuses rather than guessing when multiple files exist and none is specified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three dense sentences with the purpose front-loaded and no obvious filler. The middle sentence packs several details and is somewhat complex, but every part contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema and annotations, the description covers what is read, what is reported, and key caveats such as undefined values and no assumed genome build. It is largely complete for invocation, though it lacks explicit sibling routing guidance for such a feature-rich copy-number tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents start, end, bins, chromosome, compare, and other parameter semantics in detail. The description adds only general scope such as 'for one chromosome' and decimated summaries, not meaningfully beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and resource ('Affymetrix copy-number container') and enumerates the outputs: algorithm, array, data sets, graphs, marker index, and decimated summaries. It is clear what the tool does, but it does not explicitly differentiate itself from sibling copy-number tools such as copy_number_compare or copy_number_regions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: read a container and summarize one chromosome, and the file parameter notes behavior when unset. However, the description never states when to choose this tool over sibling tools or gives explicit exclusions, so the agent must infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_number_regionsA
Read-only
Inspect

Place an Affymetrix copy-number sample's own calls in ClinGen's curated regions: for each region, which gains, losses or stretches of homozygosity fall in it, at what reciprocal overlap, and how much of the region they cover between them. Regions come from ClinGen's dosage-sensitivity curation, cached with its retrieval date — a loss is reported against the region's haploinsufficiency score and a gain against its triplosensitivity score, and no score is claimed for LOH or mosaic events, which change no copy number. NO THRESHOLD IS APPLIED: every overlap is reported with its numbers and which calls are worth reporting is a laboratory's judgement. Regions ClinGen has not placed on this build are listed separately and are NOT reported as clean.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one — and it refuses rather than guessing when there is more than one.
buildNowhich assembly's curated region list to place the calls on. Unset is the build THIS FILE states about itself, and the node refuses rather than guessing when it states none — a region is a pair of coordinates, and placing a call on the wrong assembly moves every boundary by hundreds of kilobases with nothing to show it. Values: hg19 (hg19 / GRCh37), hg38 (hg38 / GRCh38).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
regionsNoa BED region file in this project, by name, to check against INSTEAD of ClinGen's curated list — the laboratory's own panel, which is what ChAS calls the CytoRegion file. Unset is ClinGen. A BED line states no dosage score, so with this set every hit comes back with dosage null: the list says where to look and claims nothing about what a change there means. If the file states an assembly on its track line (`track ... db=hg19`) and it is not the build being read, the node refuses rather than moving every boundary by hundreds of kilobases.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
data_setNowhich data set to scan, by name. Unset is the file's FIRST, which is what the panel opens on.
min_basesNoignore any call spanning fewer bases than this. Default 0, for the same reason as min_markers. Note a single-marker call spans 0 bases.
min_markersNoignore any call shorter than this many markers. The default counts everything the file called, because a reporting floor belongs to the laboratory and not to this tool — and it is the same floor copy_number_findings applies, so both doors place the same calls.

Output Schema

NameRequiredDescription
regionsYesone entry per curated region containing at least one call: id (the ISCA identifier a report cites), name, cytoband, chrom, start, end (0-based half-open), covered (fraction of the region the calls cover between them, each base counted once, so it never exceeds 1), counts by finding kind, and hits — each with the finding itself, overlapBases, reciprocalOverlap (the SMALLER of the two containment fractions, so a focal call inside a whole-arm region scores low rather than 100%), regionCovered, and dosage/dosageAxis: ClinGen's score and description for the axis that speaks to that call's direction, or null for LOH and mosaic events, which change no copy number
summaryYeshow many curated regions contain a call, out of how many were checked, on which build
unplacedYescurated regions ClinGen has NOT placed on this build — it states their location as 'tbd'. They carry id, name, cytoband and their dosage scores but no coordinates, so nothing could be checked against them. They are NOT clean: they are unchecked. Empty on hg19, which places all of them
provenanceYeswhich region list answered: its authority, source URL, the curation date the file states, the assembly, and how many regions were placed and unplaced. A cached copy of an authority's table is only interpretable with its version beside it

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (readOnly, non-destructive, closed-world), so the description carries the behavioral burden and delivers: regions are cached with a retrieval date, loss is scored against haploinsufficiency and gain against triplosensitivity, no score is claimed for LOH/mosaic, no overlap threshold is applied, and regions absent from the build are listed separately rather than silently passed as clean. It also discloses that the node refuses rather than guessing on ambiguous build/file inputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the opening clause and every subsequent clause carries information, but the body is delivered as two extremely long multi-clause sentences, which makes it denser and harder to scan than it needs to be for its length. Nothing is padding, but the structure could be broken up profitably.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and 100% schema coverage means parameters are documented. The description fills the remaining gaps — scoring semantics, caching, refusal behavior, and the reporting-floor philosophy — leaving little an agent would need beyond it; only the framework-level _files and _subject plumbing goes unmentioned, which is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the per-parameter descriptions are unusually rich (refusal semantics, defaults rationale, BED track-line enforcement), so the baseline is 3. The description body adds a little framing — the no-threshold stance and the dosage-null behavior of a lab panel — but largely restates what the schema already documents, so it does not meaningfully exceed the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — placing an Affymetrix copy-number sample's calls into ClinGen curated dosage-sensitivity regions — and enumerates the outputs (which gains/losses/LOH fall in each region, reciprocal overlap, region coverage). This is clearly distinguishable from siblings such as copy_number_findings, copy_number_loh, or copy_number_segment, which produce calls rather than overlap them against curated regions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the description explains what the tool does with regions, the lab-panel override, and the no-threshold stance, but never says when to reach for this tool instead of copy_number_findings, copy_number_loh, or annotate_region. The one comparative hint — that min_markers is 'the same floor copy_number_findings applies' — lives in the parameter schema, not the description. No explicit when-not guidance is offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_number_segmentA
Read-only
Inspect

Segment one chromosome of an Affymetrix copy-number container by up to four independent methods and report where they agree. The HMM lays a copy-number model over the log2 ratios and calls a state per segment; circular binary segmentation finds where the mean changes with no model of what a gain looks like, by permutation test; piecewise constant fitting picks the piecewise-constant curve minimizing squared error plus a penalty per jump, with no test and no seed; PELT minimizes the same shape of objective exactly and prices a boundary with an information criterion rather than a tuned constant, so its segment count follows from a model-selection rule. Every parameter and every default is the canvas's own. NO GENOME BUILD IS ASSUMED and no method is on unless asked for.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one — and it refuses rather than guessing when there is more than one.
graphNowhich graph column to segment. Unset is the first log2-ratio column, which is what the panel segments. A column that is not a log2 ratio is refused rather than segmented: a copy-number STATE column is already someone's answer.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
cbs_etaNoDNAcopy's `eta`: the error budget for stopping each permutation test early once its outcome is settled. Not the significance level; any value but 0.05 recomputes the stopping boundary. Same default as the panel.
methodsNowhich methods to run, comma-separated: `hmm`, `cbs`, `pcf`, `pelt`. Unset runs all four, because the point of this node is where they agree. The panel has each of them off until asked, so running one here is not a different default — it is the same control, pressed.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cbs_seedNoCBS accepts a boundary by permutation test, so the run is seeded and about 1 borderline dataset in 40 segments differently under a different seed. Same default as the panel.
cbs_trimNoDNAcopy's `trim`: the fraction cut from each tail before sdundo measures the noise SD. Read only when `cbs_undo_splits` is sdundo. Same default as the panel. Only applies when cbs_undo_splits is sdundo.
data_setNowhich data set to segment, by name. Unset is the file's FIRST, which is what the panel opens on.
pcf_kminNoPCF's shortest allowed segment, in markers — the finest change the fit may claim. Same default as the panel.
hmm_modelNowhich copy-number state model the HMM calls against. `file` is the model the container's own header states, and is used when unset if the file states one; otherwise the first preset. `apt-cn-state` is APT's generic method with its GC-corrected means, `apt-cn-cyto2` the six-state method written for CytoScan arrays. The panel lists the same models in the same order. Values: file (This file’s own parameters), apt-cn-state (APT cn-state (GC-corrected)), apt-cn-cyto2 (APT cn-cyto2 (CytoScan)).
pcf_gammaNoPCF's penalty per jump — how much evidence a level change must carry. Scaled by the squared MAD noise estimate unless `pcf_normalize` is off, which is what makes 40 mean the same thing on a quiet array and a noisy one. Same default as the panel.
chromosomeNowhich chromosome to segment, as the file numbers them (1-22, then 23=X, 24=Y, 25=MT — the file's own convention). Unset is the first the index carries, which is what the panel selects.
pcf_methodNowhich piecewise-constant fit: `auto` (copynumber's own rule — the exact dynamic program under 400 markers, its selectFastPcf approximation above), `exact`, or `fast`. Both are ported and graded against R, so this is a real choice. `exact` is refused above 25,000 markers rather than silently downgraded: it is quadratic there (21 s at 100,000), where the approximation fits a whole 142,000-marker chromosome in about 0.3 s. Same default as the panel. Values: auto (Automatic), exact (Exact), fast (Approximate).auto
cbs_undo_sdNoDNAcopy's `undo.SD`: the merge threshold in trimmed noise SDs. Read only when `cbs_undo_splits` is sdundo. Same default as the panel. Only applies when cbs_undo_splits is sdundo.
pelt_penaltyNoPELT's penalty, and the reason its knob is a different KIND of knob from PCF's gamma: it is an information criterion, so the number of segments follows from a model-selection rule rather than from a constant calibrated against this array's noise. MBIC is changepoint's own default and adds log(segment length) to each segment's cost as well as its (parameters + 2)·log(n) penalty. `Manual` is the only one that reads `pelt_penalty_value`. Same default as the panel. Values: MBIC (MBIC), BIC (BIC), SIC0 (BIC without the location term), AIC (AIC), Hannan-Quinn (Hannan-Quinn), Manual (Manual), None (None).MBIC
pcf_normalizeNoscale the PCF penalty by the squared MAD noise estimate (the vendor’s `normalize`). Off makes gamma an absolute penalty in squared log2 units, which is a different parameter wearing the same name. Same default as the panel.
cbs_undo_pruneNoDNAcopy's `undo.prune`: the fractional increase in residual cost pruning may accept. Read only when `cbs_undo_splits` is prune. Same default as the panel. Only applies when cbs_undo_splits is prune.
pelt_minseglenNoPELT's shortest allowed segment, in markers (changepoint's `minseglen`) — the finest change the fit may claim. Same default as the panel.
cbs_undo_splitsNoDNAcopy's `undo.splits`, the post-hoc merge over what CBS found: `none` keeps every significant split, `sdundo` merges adjacent segments whose medians are within `cbs_undo_sd` trimmed SDs (is this boundary bigger than the noise?), `prune` keeps the fewest change points whose cost stays within `cbs_undo_prune` (how few boundaries explain this almost as well?). Same default as the panel. Values: none (Keep every split), sdundo (Merge within SDs), prune (Prune by cost).none
pelt_standardizeNodivide by the robust MAD before fitting. ON by default, and this is the one PELT default that is ours rather than the vendor's, because the vendor documents the assumption and does not enforce it: a change-in-mean cost is a raw residual sum of squares while the penalty is on a log(n) scale, so the two are only commensurate at unit variance. Off, a noisy array buys boundaries it should not and a quiet one buys none, and both look like plausible answers. Same default as the panel.
pelt_penalty_valueNothe cost a boundary must save to be worth buying, in the cost function's own units. Read ONLY when `pelt_penalty` is Manual; the named criteria derive their own from the marker count. Same default as the panel. Only applies when pelt_penalty is Manual.

Output Schema

NameRequiredDescription
summaryYeswhat each method answered on this chromosome, generated from the run — never a fixed sentence over a variable outcome
segmentsYesper method, its segments with their marker range, genomic span and level — and for the HMM, the state it called
agreementYeswhere the methods that ran put their boundaries, and which boundaries more than one of them found. This is the reading no single method can produce
derivationYesper method, what it actually used: the model and its means for the HMM, the seed for CBS, kmin and the raw and scaled gamma for PCF — plus each method's published provenance, and the reason where one declined to run

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, yet the description adds real behavioral context beyond them: NO GENOME BUILD IS ASSUMED, methods are off unless requested, exact PCF is refused above 25,000 markers rather than silently downgraded, and unset file/column/record selections refuse rather than guess. This is the kind of disclosure that meaningfully changes how an agent calls the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and scope are front-loaded in the opening sentence, and the method-by-method contrast is genuinely useful for method selection. It is somewhat long and the four-method exposition borders on verbose, but each sentence carries either routing or behavioral content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description supplies the key caveats an agent needs (no genome build assumed, no default method active, refusal semantics). For a 22-parameter tool with full schema coverage, this is nearly complete, though it could have said more about relationships to sibling copy-number tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema, which sets the baseline at 3. The description body itself only loosely restates the parameter territory ('every parameter and every default is the canvas's own') and adds no syntax or format detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb, resource, and scope: segment one chromosome of an Affymetrix copy-number container with up to four methods and report agreement. It is far more precise than a tautology, but it never distinguishes itself from siblings like copy_number_regions or copy_number_compare, so it stops 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage through 'Unset runs all four, because the point of this node is where they agree' and the note that no method is on unless asked, which hints at when to run the full set vs. a subset. However there is no explicit when-to-use-this-vs-an-alternative-tool statement or exclusion guidance, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_number_somaticA
Read-only
Inspect

Read an Affymetrix array result's own somatic-mutation calls: one row per mutation probe set with the producer's call, the score behind it and the two thresholds that call was graded against. OncoScan CNV Plus states this table; CytoScan and SNP 6.0 results do not, and the tool says so rather than answering empty.

NameRequiredDescriptionDefault
fileNowhich copy-number file in this project, by name. Unset, it is the project's only one — and it refuses rather than guessing when there are several.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
detected_onlyNoreport only the calls the producer detected. Default false: the undetected rows are what say the probe set was READ and came back wild type, which is a different answer from the probe set being absent.

Output Schema

NameRequiredDescription
callsYesone entry per mutation probe set: probe_set (the producer's own identifier), call (its word — `Detected`, `Undetected`, or a third this reader passes through unchanged), detected (that word tested against the undetected one), score (MutScore, the statistic the call was made on), signal (QNSignal, the quantile-normalized signal behind the score), threshold_high and threshold_low (MutThreshHigh/MutThreshLow — the bars THIS probe set was graded at, which differ row to row), and from the array's annotation database for the genome the file states: gene, mutation (protein and cDNA change), cosmic (COSMIC id), chromosome, and position (1-based, the variant's first base); all five are null for a probe set that database does not list or when the file states no genome it is cached for.
summaryYeshow many mutation probe sets this file states, how many the producer detected, and which array wrote them
detectedYesthe subset of `calls` whose word is not the undetected one — the mutations this sample actually carries, in the same shape
provenanceYeswhich file answered, the container kind it was read from, the name of the data set the somatic table was found in, how many rows it holds, placement (which annotation database, genome and retrieval date placed the calls and how many it placed, or why none were placed), and the vocabulary note: the call words are the producer's own and are not normalized here

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe read-only, non-destructive, closed-world profile, and the description adds substantive behavior on top: the table exists only for OncoScan CNV Plus, and the tool reports that explicitly instead of returning an empty result. That failure-mode disclosure is exactly the kind of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler: the first front-loads what the tool returns, the second carries the platform gate and the refusal behavior. Every clause adds information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering return shape, the description only needs to add scope and caveats, which it does well (platform availability, explicit refusal instead of empty). The remaining gap is the absence of any pointer to the sibling tool an agent should use when the platform is CytoScan or SNP 6.0.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameters (file, _files, _subject, detected_only) are each documented in the schema, including the detected_only default semantics. The description adds no per-parameter detail and never mentions detected_only, so the schema does the heavy lifting and the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: reading an Affymetrix array result's own somatic-mutation calls, with a precise row-level description (probe set, call, score, two thresholds). It does not explicitly name or contrast itself with the many copy_number_* siblings (e.g. copy_number_read, copy_number_findings), so differentiation is by subject matter rather than by direct sibling comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use context (you want the producer's own somatic calls from an Affymetrix array) plus a when-not condition: only OncoScan CNV Plus states this table, and CytoScan/SNP 6.0 results will not have it. It stops short of naming an alternative tool to use for those other platforms, so the routing guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crispr_analyze_screenA
Read-only
Inspect

Call HITS from a pooled CRISPR screen: per-guide read counts in, a gene-level Bayes factor and a precision/recall curve out. This is the other end of a screen from the pool designer — it reads what came back rather than deciding what to order. The estimator is BAGEL2 (Kim & Hart 2021), reproduced byte-for-byte against upstream, so a gene's Bayes factor here is the number BAGEL2 prints for the same counts. It is a COMPARISON against two reference gene sets, not an absolute fitness measure, and it reports how many of those reference genes the library actually carries, because a screen whose gene symbols do not match the reference sets trains on almost nothing and still returns a ranking. MAGeCK's alpha-RRA and drugZ are different statistics that disagree with this one on the same counts; neither is computed here, and a hit list must say which statistic produced it.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
fdr_cutNothe false-discovery rate the hit list is cut at. A DISPLAY threshold read off the computed curve, not a parameter of the estimator.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
min_readsNodrop a reagent whose SUMMED control count is below this (upstream's -m). Applied after the pseudocount, exactly as upstream applies it.
read_countsYesthe count table: a header line, then one row per reagent — identifier, gene, then one column per sequenced sample. Tab- or comma-separated. Counts may be written as decimals, as upstream's own files are.
pseudo_countNoadded to every count before normalising to 10,000,000 reads per column. Advanced.
sample_columnsNowhich sample column names to score. Leave empty to score every column that is not a control.
control_columnsYesthe T0 / plasmid column NAMES, exactly as the header spells them. Summed before the fold change, so a two-replicate T0 is one control and not two.
essential_genesYesreference ESSENTIAL gene symbols, one per line (extra columns ignored). BAGEL2's CEGv2 is the usual choice; the editor panel ships it and the mouse set beside it.
equalise_replicatesNoscale every Bayes factor as if the screen had this many replicates (upstream's -p), 0 to leave it off. A BF is a SUM over replicates, so two screens of different replicate counts are not comparable until this is set. Advanced.
non_essential_genesYesreference NON-ESSENTIAL gene symbols, one per line. BAGEL2's NEGv1 is the usual choice.

Output Schema

NameRequiredDescription
fitYesthe fitted line the Bayes factor is scored against: slope, intercept and the fold-change window
hitsYesgenes at or above the Bayes factor the FDR cut lands on
curveYesthe precision/recall curve, one row per gene
genesYesevery gene with its Bayes factor, standard deviation and observation count, ranked
hitBfYesthe Bayes factor the cut lands on (0 when nothing clears the FDR)
trainingYesreference essential and non-essential genes FOUND in this library, against the number supplied — the check that the symbols match

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), yet the description adds substantial behavioral context beyond them: the estimator is BAGEL2 reproduced byte-for-byte against upstream, the output is a comparison against two reference gene sets rather than an absolute fitness measure, and it discloses a real failure mode (symbol mismatch between library and reference sets yields a ranking trained on almost nothing).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and input/output contract are front-loaded in the first sentence, and the remaining sentences are informative rather than filler. It is dense and somewhat long, with a few ornate phrasings ('reproduced byte-for-byte'), but nothing is pure padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not describe return values, and it still covers the statistical semantics, the comparison nature of the result, and the principal failure mode. For an 11-parameter, nested-schema tool this is complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 11 parameters (including why fdr_cut is a display threshold, that min_reads is applied after the pseudocount, and that equalise_replicates makes Bayes factors comparable). The description adds only high-level framing (reference gene sets, read-count table) rather than new parameter semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (calling hits from a pooled CRISPR screen), names the concrete inputs (per-guide read counts) and outputs (gene-level Bayes factor, precision/recall curve), and explicitly contrasts itself with the pool designer sibling. An agent can tell it apart from the design-side tools 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames when to use it: 'the other end of a screen from the pool designer — it reads what came back rather than deciding what to order,' and warns that MAGeCK alpha-RRA and drugZ are different statistics not computed here. However, it does not differentiate from the other analysis-side CRISPR siblings (crispr_quantify_edits, crispr_score_deephf, crispr_score_deepspcas9), which is the remaining routing gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crispr_design_guidesB
Read-only
Inspect

Design and score CRISPR guides on the subject — on/off-target scores, QC flags, and cloning-enzyme conflicts. Nuclease list comes from the real nuclease registry.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
min_stemNominimum self-complementary stem to report. In nt. Advanced.
nucleaseNothe nuclease (PAM + spacer length) to scan for. Values: SpCas9 (SpCas9: NGG (3')), SpCas9-NG (SpCas9-NG: NG (3')), SpG (SpG: NGN (3')), SpRY (SpRY: NRN (3')), xCas9 (xCas9: NG (3')), SaCas9 (SaCas9: NNGRRT (3')), SaCas9-KKH (SaCas9-KKH: NNNRRT (3')), AsCas12a (AsCas12a: TTTV (5')), LbCas12a (LbCas12a: TTTV (5')), enAsCas12a (enAsCas12a: TTTV (5')).SpCas9
region_endNorestrict results to guides ending at/before this position. In bp. Advanced.
region_startNorestrict results to guides starting at/after this position (0-based). In bp. Advanced.
restriction_enzymesNocloning enzymes whose recognition site must NOT appear in the spacer. Advanced.

Output Schema

NameRequiredDescription
countYesguides passing the region filter
guidesYesthe designed guides, scored
regionYesthe window the guides were filtered to, resolved: start, end, and whether it is the whole molecule. Reported because `region_start`/`region_end` are optional and their default is the molecule's length, which a caller holding only this result does not have — without it, `count` of `totalCandidates` cannot be read
topSpacerYesspacer of the highest-ranked guide
totalCandidatesYescandidates found before filtering

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds useful substance by enumerating the analysis it performs (on/off-target scoring, QC flags, cloning-enzyme conflict detection), but says nothing about scoring method, reference requirements for off-target search, or computational cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the outputs front-loaded after the verb; no filler. The trailing 'Nuclease list comes from the real nuclease registry' is the weakest part — more promotional than informative — but it is brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a fully documented 7-parameter schema, an output schema, and explicit annotations, the description only needs to convey intent and scope, which it does. The main gap is whether off-target scoring requires an external reference or is intrinsic, which an agent about to run the tool would want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description only adds the note that nuclease choices come from a 'real nuclease registry' — mildly informative but not needed, since the enum already lists each nuclease with its PAM. It says nothing extra about min_stem, region bounds, or restriction_enzymes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (design and score) and resource (CRISPR guides) plus the concrete outputs: on/off-target scores, QC flags, cloning-enzyme conflicts. This distinguishes it implicitly from siblings like crispr_design_library, screen_guides, and crispr_score_deephf, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to reach for this tool versus screen_guides, crispr_design_library, search_off_targets, or fold_guide, and no stated prerequisites or exclusions. The phrase 'on the subject' hints at the input shape but is not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crispr_design_libraryA
Read-only
Inspect

Turn the open record's annotated targets into an ORDERABLE sgRNA oligo pool: the best N guides per target, filtered at order time (Pol-III terminator, Graf inactive motif, cloning-enzyme site, minimum on-target score), each composed into the oligo a synthesiser makes — the vector's cloning overhangs around the spacer plus, optionally, one of CRISPOR's eleven subpool barcodes. A spacer that serves two overlapping targets takes ONE well, and every candidate a filter held back is counted by reason, so a short pool says which rule shortened it. It designs a library; it does not analyse one. No recommended representation, MOI or read depth is embedded — the screen-scale arithmetic is in the editor panel, where the numbers are the user's.

NameRequiredDescriptionDefault
moiNomultiplicity of infection, 0 to leave it unplanned. Joung et al. 2017 recommends <0.3 so most cells take at most one perturbation; reported, never applied. Advanced.
rankNowhich on-target score orders the candidates. A guide the chosen model cannot score is left unranked, never dropped. Rule Set 3 is deliberately not offered here: its weights are a 9.8 MB download the editor fetches on demand, and this engine is headless and cannot fetch — offering it would return an unranked pool that looked ranked.ruleSet1
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
nucleaseNothe nuclease (PAM + spacer length) to scan for. Values: SpCas9 (SpCas9: NGG (3')), SpCas9-NG (SpCas9-NG: NG (3')), SpG (SpG: NGN (3')), SpRY (SpRY: NRN (3')), xCas9 (xCas9: NG (3')), SaCas9 (SaCas9: NNGRRT (3')), SaCas9-KKH (SaCas9-KKH: NNNRRT (3')), AsCas12a (AsCas12a: TTTV (5')), LbCas12a (LbCas12a: TTTV (5')), enAsCas12a (enAsCas12a: TTTV (5')).SpCas9
barcode_idNoCRISPOR subpool barcode id, 0 for none — lets several sub-libraries share one synthesis array and amplify apart. Advanced.
target_typeNoannotation type to take as the targets, one pool entry per feature of that type (`CDS`, `gene`, …). Leave unset to treat the whole record as a single target — which is what a saturating-mutagenesis pool over one locus wants.
exclude_grafNodrop guides matching a Graf 2019 inactive motif (the TT/GCC classes).
custom_prefixNoyour vector's 5' cloning overhang. BOTH sides must be given, or the pool stays on pLentiGuide — that is upstream's rule, reproduced. Advanced.
custom_suffixNoyour vector's 3' cloning overhang. Advanced.
exclude_poly_tNodrop guides whose spacer carries a Pol-III (TTTT) terminator.
representationNocells you intend to keep carrying EACH guide. Joung et al. 2017 recommends >500; the default here is the neutral 1, not that recommendation, so the plan is the identity until you choose a scale. Advanced.
reads_per_oligoNosequencing reads per guide in the readout. Joung et al. 2017 recommends >500 for a screen (>100 to QC the cloned library); the default here is the neutral 1. Advanced.
guides_per_targetNohow many guides to take per target, best-ranked first.
restriction_enzymesNocloning enzymes whose recognition site must NOT appear in the spacer — a hit drops the guide from the pool. Advanced.
transduction_efficiencyNofraction of cells that take up a construct, 0-1 — sizes the transduction back up from the cells you need to keep. Advanced.

Output Schema

NameRequiredDescription
countYesoligos in the pool
oligosYesone row per selected guide: target, spacer, coordinates, rank score, Graf class and the oligo to order
coverageYesthe screen's scale at the numbers given: cells to keep, cells to transduce, reads to buy, guides the depth expects to miss, and `belowGuidance` naming which of Joung et al. 2017's figures the plan falls short of
perTargetYesper target: candidates, selected, shortfall, and what each filter held back
oligoLengthYeslength of every oligo, for a synthesis quote (null when the pool is mixed)
distinctSpacersYesdistinct spacers — the number the screen's complexity is set by

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a safe, read-only, non-destructive, non-open-world operation. The description adds rich behavioral context beyond annotations: order-time filtering, deduplication of overlapping targets into one well, per-reason counting of held-back candidates, the headless engine's inability to fetch Rule Set 3 weights, and the deliberate absence of recommended representation/MOI/read depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, and the description is information-dense rather than repetitive. It is somewhat long and ornate, with clauses like 'every candidate a filter held back is counted by reason' that could be tightened, but each sentence contributes useful scope or behavioral detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex 16-parameter nested schema, full parameter descriptions, annotations, and an output schema, the description provides enough context to call the tool correctly. It covers purpose, filtering behavior, synthesis-ready output, limitations, and what is intentionally not embedded, without needing to explain return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 16 parameters in detail, including advanced flags and their defaults. The description adds some framing (best N guides per target, optional barcode, both custom overhangs required) but mostly reiterates what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: turning the open record's annotated targets into an ORDERABLE sgRNA oligo pool, with best-N guides per target and synthesis-ready oligo composition. It explicitly distinguishes itself from analysis tools ('It designs a library; it does not analyse one') and from generic guide design by emphasizing orderable pools, cloning overhangs, and subpool barcodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use: designing an orderable sgRNA pool from an open record's annotated targets, and states what it does not do ('does not analyse one'). It also notes that representation, MOI, and read depth are not embedded and points to the editor panel for screen-scale arithmetic. However, it does not explicitly name alternative sibling tools such as crispr_design_guides or when to choose them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crispr_quantify_editsA
Read-only
Inspect

Quantify a CRISPR edit from a pair of Sanger traces — how much of the population was edited, what the indel spectrum looks like, and how well the model fits. Synthego ICE: the CONTROL trace gives the unedited sequence, the EDITED trace is decomposed into a mixture of proposed indels around each guide's cut, and the abundances are fitted. Answers the question a screen cannot: not whether a guide is good, but what it actually did to these cells.

NameRequiredDescriptionDefault
donorNooptional HDR donor / ssODN. Given one, ICE also proposes the recombination outcome and reports an HDR percentage; left empty there is no HDR arm rather than a zero.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
editedYesthe EDITED trace, by file name or id.
guidesYesthe guide spacers, RNA accepted. Each is located in the CONTROL on either strand, so the cut sites come from the data rather than from a coordinate you supply.
controlYesthe UNEDITED trace, by file name or id — it supplies the reference the edited read is decomposed against.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
base_editingNoalso fit every single-base change on the PAM-distal side of each cut, for a base editor. Left false, the scores stay comparable with published ICE numbers, which the extra proposals would move. Advanced.
indel_max_sizeNolargest single-cut indel modeled either side of the cut — ICE's own CLI default is 20. In bp. Advanced.

Output Schema

NameRequiredDescription
iceDYesICE-D, an independent discordance-based read on the same trace — a second opinion rather than a restatement
checksYesTIDE once per guide and tracy's breakpoint call on the same pair, reported beside ICE and never averaged into it; tracy's `status` says whether it agrees with ICE's top sizes
hdrPctYesthe HDR percentage, when a `donor` was given
reportYesthe whole result, including ICE's own notes and warnings
iceScoreYesthe headline ICE score: the edited fraction of the population, 0-100
perGuideYeseach guide's own answer: its cut (control base, from 1), the share edited there, its indel spectrum at that cut alone, and the alleles edited at it and another cut
rSquaredYeshow well the fitted mixture explains the edited trace. A high ICE score with a poor fit is not a result, and this is the number that says so
spectrumYesthe indel-size histogram ICE publishes, every size from -2x to +1x `indel_max_size` INCLUDING the zeros, so the spectrum's shape is visible and not only its peaks
baseEditsYeswith `base_editing`, each fitted substitution (protospacer position, control base, change, share, refit interval), the range of the pool carrying any, and the notes on phasing and near-cut calls; null otherwise
inseparableYesgroups of reported alleles this trace cannot tell apart (their expected traces correlate above a variance inflation factor of 5), each with its summed share and 95% interval; the split inside a group is not measured
contributionsYeseach proposed edit with its relative abundance, most abundant first
knockoutScoreYesthe fraction carrying a frameshift or a 21+ bp indel — the number a knockout experiment is actually asking for, which is NOT the same as the edit fraction

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/ non-destructive/closed-world, so the safety profile is covered; the description goes further and discloses non-obvious behavior: an absent donor yields 'no HDR arm rather than a zero', and base_editing would shift scores away from published ICE comparability. It does not discuss runtime cost, failure modes on poor traces, or what a failed fit looks like, which keeps it short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded paragraph: the action and outputs come first, the ICE mechanics second, the sibling contrast last. Roughly 90 words with no redundant sentences. The rhetorical closer ('Answers the question a screen cannot') is vivid but arguably costs a little space given the density of the mechanics sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be explained, and the description plus schema together cover all 8 parameters, the HDR branch, and the base-editor variant. The only omissions are the generic project-record plumbing (_subject/_files), which the schema handles, and any mention of trace-quality prerequisites — minor for a read-only analysis tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including donor, base_editing, indel_max_size and the _subject/_files plumbing is documented in structured form — baseline 3. The description adds interpretive framing (guides located on either strand, cut sites from data, HDR arm semantics) but largely restates what the schema already says rather than adding new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (quantify) and resource (a CRISPR edit from a pair of Sanger traces) and enumerates the three outputs: edit fraction, indel spectrum, model fit. It then names and contrasts the sibling class it is not — screens ('not whether a guide is good, but what it actually did to these cells') — so an agent can separate it from crispr_analyze_screen and screen_guides 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: a CONTROL trace supplies the unedited reference, an EDITED trace is decomposed against it, and guides are located in the control so cut sites are derived from data. The screen-vs-measure framing is an effective when-to-use signal. It stops short of naming the nearest alternatives (tide_quantify_indels, quantify_base_editing, detect_trace_indel) or stating exclusions, so it is clear but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crispr_score_deephfA
Read-only
Inspect

Score CRISPR guides with DeepHF: a predicted knockout EFFICIENCY between 0 and 1 for wild-type SpCas9 (U6 or T7 promoter), eSpCas9(1.1) or SpCas9-HF1. It is not a z-score and not comparable with Rule Set 3 — the two answer different questions and must never be averaged or ranked together. Takes 23-nt protospacers (20-nt spacer + NGG PAM), which is what crispr_design_guides produces; a guide whose PAM is not canonical NGG comes back null rather than extrapolated, because the model was trained on NGG only. THE WEIGHTS DOWNLOAD ON FIRST USE, 3-5 MB per model, and scoring is slow by construction: each guide is folded twice, once with the 79-nt tracrRNA scaffold, before the network sees it.

NameRequiredDescriptionDefault
modelNowhich published model to score under. This is a scientific choice about YOUR experiment — which Cas9 variant, and which promoter the sgRNA is expressed from — not a quality setting, and scores from two models are not comparable. Values: wt_u6 (WT SpCas9 · U6 promoter), wt_t7 (WT SpCas9 · T7 promoter), wt (WT SpCas9 · both promoters), esp (eSpCas9(1.1)), hf (SpCas9-HF1).wt_u6
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
protospacersYesthe 23-nt protospacers to score — 20-nt spacer plus the 3-nt PAM, exactly as DeepHF takes them. Anything that is not 23 nt of unambiguous A/C/G/T ending in GG scores null rather than being silently trimmed or extrapolated.

Output Schema

NameRequiredDescription
bestYesthe highest-scoring protospacer, or empty when none could be scored
modelYeswhich model produced these numbers. Scores from two models are not comparable
scoredYeshow many of the inputs DeepHF is defined on — the accounting, not an assumption
scoresYesevery protospacer with its efficiency, IN THE ORDER GIVEN — null where DeepHF is not defined, with the reason beside it
efficienciesYesjust the numbers, same order — null-preserving, so it lines up with the input

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, closed-world operation, and the description adds substantial behavior beyond them: first-use weight downloads of 3-5 MB per model, slow scoring because each guide is folded twice with a 79-nt tracrRNA scaffold, and null returns rather than extrapolation for non-NGG PAMs. These are operational facts 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb and output semantics, then constraints and costs in descending priority; every sentence carries information. The all-caps warning about weight downloads is a little shouty and slightly interrupts the flow, keeping it out of the top score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description still clarifies the null case and score scale. With model semantics, input format, runtime and download caveats all covered, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the `model` enum already carries the 'scientific choice, not a quality setting' framing, so the description largely restates it. The added nuance that scores across models are not comparable is useful but already implied by the schema text, so this sits at the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (score), resource (CRISPR guides), the method (DeepHF) and the exact output semantics (predicted knockout efficiency between 0 and 1). It explicitly separates itself from Rule Set 3 scoring, so an agent can distinguish it from sibling scoring tools 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent what input to supply (23-nt protospacers as produced by crispr_design_guides), which models apply to which Cas9 variant/promoter, and gives an explicit when-not: scores from different models and from Rule Set 3 must never be averaged or ranked together. Non-canonical PAM handling is also specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crispr_score_deepspcas9A
Read-only
Inspect

Score CRISPR guides with DeepSpCas9 (Kim et al. 2019, Sci Adv 5:eaax9249): a predicted INDEL FREQUENCY IN PERCENT for wild-type SpCas9. It is a third quantity, not a second opinion: Rule Set 3 is a z-score across a screen and DeepHF is an efficiency in [0, 1], so none of the three may be averaged or ranked together. Takes the 30-nt CONTEXT the model reads whole (4 nt + 20-nt spacer + 3-nt PAM + 3 nt), which is what crispr_design_guides reports as context30; a 23-nt protospacer is not enough and comes back null rather than padded. Unlike DeepHF it does NOT require a canonical NGG PAM, because its training library was not NGG-only. The output is the network's own linear value and is left unclipped, so a context it scores below zero reads below zero. THE WEIGHTS DOWNLOAD ON FIRST USE, about 0.93 MB, once.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
contextsYesthe 30-nt contexts to score, exactly as DeepSpCas9 takes them: 4 nt upstream, the 20-nt spacer, the 3-nt PAM and 3 nt downstream. Anything that is not 30 nt of unambiguous A/C/G/T scores null, with the reason beside it, rather than being trimmed or padded.

Output Schema

NameRequiredDescription
bestYesthe highest-scoring context, or empty when none could be scored
scoredYeshow many of the inputs DeepSpCas9 is defined on — the accounting, not an assumption
scoresYesevery context with its predicted indel percentage, IN THE ORDER GIVEN — null where the model is not defined, with the reason beside it
indelPercentsYesjust the numbers, same order — null-preserving, so it lines up with the input

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, non-destructive), it discloses that weights download on first use ('about 0.93 MB, once'), that the output is unclipped linear and may read below zero, that non-30-nt input returns null with a reason beside it, and that no canonical NGG PAM is required. These are real operational traits an agent cannot get 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded — the core quantity is stated first, then differentiators, input format, and edge behavior. Most sentences earn their place, though the citation and the repeated emphasis on null-returning input add some redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a scoring tool with an output schema, it covers everything the agent needs: what it measures, its unit, input shape, edge cases, first-use latency, and how it relates to sibling scorers. Nothing required 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds genuine semantics: the exact 30-nt layout (4 nt + 20-nt spacer + 3-nt PAM + 3 nt) and the fact that this matches `crispr_design_guides`'s `context30`. That is more than the schema's restatement and materially helps construction of the argument.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Score CRISPR guides with DeepSpCas9') and names the exact output unit (predicted INDEL FREQUENCY IN PERCENT). It explicitly positions itself against two sibling tools (Rule Set 3's z-score and DeepHF's [0,1] efficiency), so an agent can tell it 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use framing ('a third quantity, not a second opinion... none of the three may be averaged or ranked together') and names the alternative scoring model with the differentiating condition. It also states the input requirement that routes correctly: a 23-nt protospacer comes back null, so the 30-nt context must be supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decompose_r_groupsA
Read-only
Inspect

RDKit's R-group decomposition of a list of small molecules on a core given as SMARTS (default RGroupDecomposition parameters): per matched structure its core and substituents R1, R2 …, and the structures the core does not match. Indices are 0-based.

NameRequiredDescriptionDefault
coreYesthe core, as SMARTS.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculesYesthe structures: one SMILES or molfile per entry.

Output Schema

NameRequiredDescription
rowsYesper matched structure: its index and its groups (Core, R1, R2 …) as SMILES
summaryYesthe decomposition in words, generated from this run
unmatchedYesinput indices the core does not match

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe read-only profile. Beyond that, the description adds useful behavioral detail: it uses default RGroupDecomposition parameters, returns per matched structure its core and substituents, reports unmatched structures separately, and uses 0-based indices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and largely waste-free, covering method, parameters, output grouping, and indexing in two sentences. The long first sentence is dense but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to detail return values, though it helpfully summarizes them. It covers the required parameters well; the optional _files and _subject parameters are documented only in the schema, but that is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents molecules (SMILES or molfile entries) and core (SMARTS). The description restates these but adds no syntax or format meaning beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (R-group decomposition) and resources (small molecules, SMARTS core), making the tool's function clear. It does not explicitly distinguish itself from neighboring cheminformatics tools such as cluster_molecules or compare_molecules, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but gives no guidance on when to use it versus alternatives, nor any prerequisites or exclusions. Usage is left entirely to inference from the tool name and purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delta_blast_smartA
Read-only
Inspect

DELTA-BLAST, run on this machine: build a position-specific profile for a protein from the SMART conserved domains it contains, then search other proteins with it (one PSI-BLAST iteration) — more sensitive than BLASTP for distant homologs. Searches the open record's coding sequences unless subjects gives FASTA. NCBI BLAST+ 2.17.0's algorithms, checked against the deltablast program on every bundled protein. Nothing is sent anywhere.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
evalueNoreport alignments with E at most this (`-evalue`); BLAST's default is 10.
sourceNowhere the SMART database is read from: 'bundled' (a byte-identical copy of NCBI's file) or 'ncbi' (NCBI's FTP site, now). Advanced.bundled
proteinYesthe protein, one-letter codes; wire it from translate_sequence or read it off a CDS.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
subjectsNothe proteins to search, as FASTA; leave empty to search the open record's coding sequences.
thresholdNolowest profile word score seeded in the lookup table (`-threshold`). Advanced.
max_target_seqsNomost proteins reported (`-max_target_seqs`).
domain_inclusion_evalueNoconserved-domain hits with E below this build the profile (`-domain_inclusion_ethresh`).

Output Schema

NameRequiredDescription
countYesproteins reported
domainsYesthe conserved-domain alignments DELTA-BLAST built its profile from (rpsblast at the domain inclusion E-value): accession, shortName, title, and each HSP's query and model coordinates, score, bits, E-value, identities and aligned strings
profileYeshow the profile was built: domainsUsed, columnsCovered, meanObservations, and the profile's gapped lambda and kappa
proteinsYesevery protein hit, best first: id, title, length, and each HSP with query and subject coordinates, score, bits, E-value, identities, positives, gaps and aligned strings

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, non-destructive and closed-world. The description goes beyond that by disclosing that it runs locally, pins a specific engine version (NCBI BLAST+ 2.17.0), is validated against the reference deltablast program, and that 'nothing is sent anywhere' – genuine execution context rather than restated hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the algorithm and its sensitivity advantage, then adds scope and locality. Efficient overall, though the validation sentence ('checked against the deltablast program on every bundled protein') is a touch verbose for the value it adds.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full annotations, and 100% schema coverage, the description supplies everything else an agent needs: algorithm identity, sensitivity niche, default subject scope, version pinning, and offline behavior. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter is already documented inline (evalue, source, threshold, max_target_seqs, domain_inclusion_evalue). The description only elaborates on subjects' default-vs-FASTA behavior, adding marginal value over the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific algorithm (DELTA-BLAST), the operation (build a position-specific profile from SMART domains, then search), and the resource (proteins). It explicitly contrasts with BLASTP ('more sensitive than BLASTP for distant homologs'), letting an agent distinguish it from the nearby blast_search/rps_blast_smart family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: use it for distant homolog detection where BLASTP would miss, and the default search scope is spelled out ('open record's coding sequences unless subjects gives FASTA'). It does not explicitly name the sibling alternatives to use when sensitivity is not needed, so 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demultiplex_readsA
Read-only
Inspect

Assign reads to the index each one came from, and say how many could NOT be assigned reliably — a hit further from a barcode than the set's guaranteed correction radius is not that barcode, and counting it as one is how a demultiplexing report hides a failed run.

NameRequiredDescriptionDefault
readsYesthe observed index reads to assign.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
metricNomust match the error model the set was designed under. Values: hamming (Hamming (substitutions)), seqlev (Sequence-Levenshtein (indels)), levenshtein (Levenshtein).seqlev
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
barcodesYesthe index set the reads were tagged with.

Output Schema

NameRequiredDescription
hitsYeseach read with the barcode it was assigned to and the distance
assignedYesreads assigned within the guaranteed correction radius
ambiguousYesreads whose nearest barcode is further than the set can correct — these are NOT that sample

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: hits farther than the set's guaranteed correction radius are reported as NOT assigned, and this unassigned count is the signal of a failed run. It stops short of disclosing error handling or how to interpret borderline hits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, action-first ordering, no repetition of the title or annotations. The second sentence is dense and slightly convoluted (correction-radius concept plus the reporting critique), but every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description supplies the key interpretive framing (unassigned reads are the diagnostic), but omits any pointer on metric selection or prerequisites, leaving a small gap for a 5-parameter tool with nested objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents barcodes, reads, metric and _subject/_files. The description adds no parameter-level detail (e.g., that metric must match the error model the set was designed under, which the schema states and the prose omits). Baseline 3 is appropriate when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (assign) and resource (reads to their originating index), which is clearly distinct from alignment/trimming siblings like map_reads or trim_reads. It does not name an alternative tool or explicitly scope itself against them, but the action and the second half's focus on unassignable reads make the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: you call it when you have index reads and a barcode set and need per-index assignment plus a count of unreliable hits. There is no explicit when-to-use/when-not-to-use guidance and no named alternative (e.g., audit_barcodes, check_index_pool, map_reads) for related questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_discovery_corpusA
Read-only
Inspect

The design step's view of a discovery corpus: each record's name, file, length and GC fraction, and how many records each file holds. Runs no test and returns no statistic, so hypotheses proposed from it are proposed before any result is seen (POPPER's metadata-only design step). Use it before run_discovery_programme.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequencesNothe corpus: library document or file names, or wired records.

Output Schema

NameRequiredDescription
filesYesevery file with its record count and total length
recordsYesevery record: name, file, length, GC fraction

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful epistemic context beyond annotations: it runs no test, returns no statistic, and serves as the pre-registration design step so hypotheses precede results. That is genuine behavioral value, though it does not cover return format or limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and what is returned, then the behavioral nuance and the ordering instruction. Every sentence earns its place; the parenthetical '(POPPER's metadata-only design step)' is slightly ornamental but conveys the intent compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and the description fully covers purpose, content, ordering relative to its sibling, and the read-only nature. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents _files, _subject, and sequences thoroughly. The description does not add syntax or format detail beyond the schema, so the baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (describe) and resource (discovery corpus), then enumerates exactly what the view contains: record name, file, length, GC fraction, and per-file record counts. It clearly distinguishes itself from run_discovery_programme by being the metadata-only view. 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions itself in the workflow: 'Use it before run_discovery_programme.' It also carves out what it does not do ('runs no test and returns no statistic'), naming the sibling and the condition that selects it. Nothing is left to inference about ordering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_projectA
Read-only
Inspect

Describe the project the way the copilot is told about it: every file, what it carries and which tool reads it, which files are indexed or paired with each other, and the codon-usage tables a tool resolves by name. Over the API or MCP it describes the files sent as _files; in the app it describes the open project.

NameRequiredDescriptionDefault
titleNothe project's name, for the header line when the files were sent with the call. In the app the open project's own title is used.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
textYesthe project section exactly as the copilot receives it, one line per fact
filesYeshow many files it describes
unreadYesfiles sent with the call that the importer could not read, each with its reason. They are not in the project, exactly as a file the app refuses at import is not

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuine value beyond that: the dual API-vs-app sourcing behavior and a concrete enumeration of what the report contains (file carriers, reading tools, pairing, codon tables).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with 'Describe the project' and no wasted preamble. The first sentence is dense and list-like but each clause conveys real content; the second earns its place by disambiguating the two operational contexts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (so return shape needn't be explained) and 3 nested params fully documented in the schema, the description is complete enough: it conveys the source of data (API _files vs open project) and the scope of what is described. Minor gap is the absence of any sequencing/relationship to related read tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents title, _files, and _subject in depth. The description echoes _files ('the files sent as _files') and title implicitly but adds no format or shape detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (describe) and resource (project) and elaborates the exact content returned: files, what they carry, the tool that reads them, indexing/pairing, and codon-usage tables. Clear purpose, though it doesn't explicitly name a sibling alternative to distinguish itself from tools like get_open_record or list_library.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the two contexts of use — 'Over the API or MCP it describes the files sent as _files; in the app it describes the open project' — which is genuine context, but it does not state when to choose this tool over alternatives or any prerequisite/exclusion. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_barcodesBInspect

Design a set of NGS sample-index barcodes with a guaranteed minimum distance, and report what that set actually corrects — substitutions, or indels too (DNABarcodes).

NameRequiredDescriptionDefault
seedNoPRNG seed for a stochastic search: the same seed always gives the same set. Only applies when heuristic is sampling or ashlock.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
lengthNobarcode length in bases. In bp.
metricNoerror model. A set correcting one substitution may correct zero indels, so this choice is the design, not a display option. Values: hamming (Hamming (substitutions)), seqlev (Sequence-Levenshtein (indels)), levenshtein (Levenshtein), phaseshift (Phaseshift).seqlev
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
filter_gcNokeep only balanced-GC barcodes (suppressed for length ≤ 3). Advanced.
heuristicNoset-construction strategy. Values: conway (Conway (greedy)), clique (Clique), sampling (Sampling), ashlock (Ashlock).conway
iterationsNorandom restarts of the Conway closure (sampling) or generations of the evolutionary search (ashlock); DNABarcodes' default. Only applies when heuristic is sampling or ashlock.
populationNochromosomes carried per Ashlock generation; DNABarcodes' default. Only applies when heuristic is ashlock.
min_distanceNorequired minimum distance between any two barcodes — this is what buys the error correction.
filter_tripletsNoreject barcodes containing a homotriplet (AAA…). Advanced.
filter_self_complementaryNoreject barcodes that are their own reverse complement. Advanced.

Output Schema

NameRequiredDescription
countYeshow many barcodes the search actually found
analysisYesthe set's properties under EVERY metric, not just the design one
barcodesYesthe designed set
warningsYeswhat the search had to say
guaranteeYescorrectable / detectable errors under the design metric

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=false and openWorldHint=false, and an output schema covers the return values. The description adds one useful behavioral fact beyond that — the result reports whether the set corrects substitutions only or indels too — plus DNABarcodes provenance, but says nothing about runtime cost or how the stochastic heuristics behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the action first and the reporting guarantee second; no filler. Slightly dense for a 12-parameter tool, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters, nested _subject/_files objects and multiple heuristic strategies, one sentence leaves the agent without any picture of the design→audit→export workflow or of default behavior trade-offs. The 100% schema coverage and output schema compensate substantially, so it is adequate rather than inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description reinforces two parameters conceptually ('guaranteed minimum distance' → min_distance, 'what that set corrects' → metric) but says nothing about seed, heuristic, iterations, population, or the three filters, all of which the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Design a set of NGS sample-index barcodes') plus the defining constraint ('guaranteed minimum distance') and the reportable property ('what that set actually corrects'). It never names its obvious siblings (audit_barcodes, export_barcodes, design_free_codes), so an agent must infer the boundary rather than read it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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; the closest signal is the clause about the design reporting which error types are corrected. Nothing routes the agent between this and audit_barcodes (validation) or export_barcodes (output), which are the natural downstream steps of the same workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_bisulfite_primersAInspect

Design BSP or MSP primers for a methylation assay, on the CONVERTED strands: after bisulfite treatment every unmethylated C reads as T, which is a different template from the one every other designer sees. BSP primers avoid CpGs so they amplify regardless of methylation state; MSP primers sit ON CpGs so they discriminate. Also reports the CpG islands (EMBOSS cpgplot) the assay should target.

NameRequiredDescriptionDefault
assayNoBSP = bisulfite sequencing PCR: primers avoid CpG sites so both methylated and unmethylated template amplify equally, and the methylation is read from the SEQUENCE afterwards. MSP = methylation-specific PCR: primers cover CpG sites so amplification ITSELF is the readout. They answer different questions and are not interchangeable. Values: BSP (BSP - amplify regardless of methylation), MSP (MSP - amplify only one state).BSP
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_gcNohighest acceptable GC. In %. Advanced.
max_tmNoprimers above this Tm are rejected outright. In °C. Advanced.
min_gcNolowest acceptable GC. The floor is low on purpose: after conversion every unmethylated C is a T, so converted DNA is genuinely GC-poor and an ordinary 40% floor rejects correct primers. In %. Advanced.
min_tmNoprimers below this Tm are rejected outright. In °C. Advanced.
opt_tmNotarget Tm; candidates rank by distance from it. Bisulfite-converted DNA is C-poor, so these run lower than an ordinary design. In °C.
min_cpgNoMSP ONLY. The fewest CpG sites a primer must cover, so it can discriminate methylated from unmethylated at all. In sites.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
criteriaNowhich published criteria call a CpG island: Gardiner-Garden & Frommer 1987 as EMBOSS cpgplot encodes it, or the stricter Takai & Jones 2002, which excludes most Alu repeats. Values: cpgplot (Gardiner-Garden & Frommer (cpgplot)), takaiJones (Takai & Jones 2002 (promoter islands)).cpgplot
max_lengthNolongest primer considered. In nt. Advanced.
min_lengthNoshortest primer considered. In nt. Advanced.
opt_lengthNoprimer length the ranking prefers. In nt.
region_endNo0-based inclusive end. Unset = the whole sequence. Advanced.
max_resultsNohow many primer pairs to return, best first.
product_maxNolongest acceptable amplicon. In bp.
product_minNoshortest acceptable amplicon. In bp.
region_startNo0-based inclusive start of the region to design in. Unset = the whole sequence; pass the selection's start to scope to it. Advanced.
island_windowNosliding window over which C, G and CpG are counted (cpgplot -window); unset takes the preset's. In bp. Advanced.
min_non_cpg_cNoBSP ONLY. The fewest non-CpG cytosines the ORIGINAL sequence under a primer must carry - the rule that makes a BSP primer bisulfite-SPECIFIC, because those cytosines become T only if conversion worked. A primer with none anneals to untreated DNA just as well and the assay silently reports on template that was never converted. In nt.
design_in_islandNodesign inside this island only, by its rank in the reported list (1 = first). Unset designs anywhere in the region; the panel instead asks for an island to be picked.
island_min_lengthNominimum island length (cpgplot -minlen); unset takes the preset's. In bp. Advanced.
island_min_obs_expNominimum observed/expected CpG (cpgplot -minoe); unset takes the preset's. Advanced.
island_min_percentNominimum %C+%G (cpgplot -minpc); unset takes the preset's. In %. Advanced.
max_cpg_distance_from_3NoMSP ONLY. How close to the 3' end the last CpG must sit. A mismatch discriminates most strongly at the 3' end, because that is where the polymerase extends. In nt. Advanced.

Output Schema

NameRequiredDescription
assayYeswhich assay was designed, echoed so a result never has to be guessed at
countYeshow many pairs were found
pairsYesthe primer pairs, best first: each with both oligos, their coordinates on the ORIGINAL unconverted sequence, Tm, GC, CpG count and the non-CpG C conversion check
forwardYesthe best pair's forward primer (wire into pcr_amplify)
islandsYesCpG islands in the record (EMBOSS cpgplot criteria) - what a methylation assay should be aimed at
reverseYesthe best pair's reverse primer
islandCountYeshow many CpG islands were found
methylatedPairsYesMSP: the pairs specific for the METHYLATED allele. Empty under BSP
unmethylatedPairsYesMSP: the pairs specific for the UNMETHYLATED allele - the other half of the assay, and the control that tells a negative from a failed reaction. Empty under BSP

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide a safety profile (readOnly=false, destructive=false, openWorld=false) for a design tool, so the description's job is contextual. It adds real domain behavior: the tool operates on the converted strand, differs by BSP/MSP chemistry, and also returns CpG island calls — information beyond what the annotations convey. It doesn't elaborate on failure modes or rate limits, but the added scientific context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Verb+resource is front-loaded, followed by the biological rationale and the CpG-island output note in three tight sentences. Some biology overlaps with schema parameter text, but nothing is wasted and structure is sound.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 25-parameter tool with nested objects and an output schema present, the description covers purpose, chemistry choice, and output scope adequately, leaning on the schema for parameter detail. Only minor gaps (no note on the nested _subject/_files handling or the Advanced-parameter grouping) keep it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema descriptions are unusually rich (assay enum fully explained, min_non_cpg_c rationale spelled out). The description reinforces BSP/MSP semantics but adds no parameter detail the schema lacks, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (design BSP/MSP primers) and immediately scopes it to a methylation assay on bisulfite-CONVERTED strands, explicitly noting this is 'a different template from the one every other designer sees' — which distinguishes it from siblings like design_primers, design_primer_pairs, design_qpcr_assay. An agent can tell it apart 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the BSP-vs-MSP choice (avoid CpGs to amplify regardless of methylation vs sit ON CpGs to discriminate), giving clear in-tool routing. It does not explicitly state when to prefer this tool over an ordinary designer beyond the implicit converted-template distinction, so no explicit alternative is named, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_codehopAInspect

Design CODEHOP hybrid oligos from a block of aligned PROTEIN - for homologues too diverged for nucleotide-level design to see at all. Each primer is a 3' DEGENERATE core over a few conserved residues fused to a 5' non-degenerate consensus clamp, back-translated through a codon-usage table. A different algorithm from the degenerate designer, not a variant of it.

NameRequiredDescriptionDefault
tableYesthe codon-usage table to back-translate the clamp through, BY NAME as the Codon Usage panel lists it. REQUIRED and deliberately without a default: a CODEHOP designed under the wrong organism's usage is wrong in a way nothing downstream can detect, so picking one here would silently pick a host (§1).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
strandNowhich strand to design on. `both` returns forward and reverse sets, which is what a PCR needs.both
max_runNolongest single-base run allowed; 2003's stated polynucleotide run limit. A primer exceeding it is rejected. In nt. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
clamp_tmNotarget melting temperature for the non-degenerate 5' clamp (Rose 2003 step 8: "the current default is 60 °C, which usually provides a clamp of ~20 nucleotides"), measured as nearest-neighbour Tm in the buffer `conditions` names. In °C.
alignmentNothe ALIGNED PROTEIN rows, each { name, sequence } in one-letter amino acids with gaps preserved - wire an upstream protein alignment here. At least 3 sequences: the clamp is a CONSENSUS, and two have none worth the name.
weightingNohow the alignment's rows are weighted before the core's consensus is read. Values: pb (Position-based (Henikoff & Henikoff 1994)), none (None — every row counts once). Advanced.pb
conditionsNosalt, magnesium, dNTP and oligo concentrations plus the salt-correction method and any additives the clamp Tm is measured in. Left unset it is filled from your reaction-conditions settings, and falls back to pydna's Taq defaults (SantaLucia & Hicks 2004 table, 250 nM primer, Owczarzy 2008 salt correction) when there are none. Advanced.
base_cutoffNominimum predicted probability for a base to enter the degenerate core. Advanced.
block_indexNowhich gapless block to design in, 0-based, ordered as `gaplessBlocks` returns them (blocks of at least 8 ungapped columns). Unset = the first.
core_lengthsNocore lengths the scan tries, in residues — every length here is scanned and the best-scoring core kept. Advanced.
alignment_fastaNoan aligned PROTEIN FASTA, when there is no upstream alignment to wire.
genetic_code_idNoNCBI `transl_table` id for the codon-to-residue map. Advanced.
max_clamp_lengthNoceiling on clamp growth, so an unreachable Tm REFUSES instead of consuming the whole block. Ours, and a stop condition rather than a published criterion - 40 nt is already twice the ~20 the paper expects. In nt. Advanced.
max_core_degeneracyNodegeneracy ceiling for the 3' core (Rose 2003 step 7: "a maximum degeneracy of 128").

Output Schema

NameRequiredDescription
tableYeswhich codon table the clamp was back-translated through, named so a design is never unattributable
forwardYesthe first forward oligo, clamp + core
primersYesthe designed oligos: each with its degenerate 3' core, its consensus 5' clamp, the residues it covers and its degeneracy
reverseYesthe first reverse oligo
blockCountYeshow many gapless blocks the alignment offers, so a caller can see there were others to choose
rejectionsYeswhy each candidate position was rejected - degeneracy, run length, or a clamp that could not reach the Tm
primerCountYeshow many oligos were designed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/destructive/openWorld flags, and the description adds genuinely non-obvious behavior: the clamp grows until an unreachable Tm REFUSES rather than consuming the block (max_clamp_length as a stop condition), and the required table has no default because a silent host pick is undetectable downstream. It does not describe the returned oligo set, but an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the verb and resource, then the mechanism, then the sibling disambiguation. No filler; the last sentence is the highest-value routing cue and closes the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter nested-schema tool, the description supplies the conceptual model (core+clamp, codon-table back-translation) needed to call it sensibly, and an output schema covers returns. Minor gap: it doesn't state the minimum-alignment-size requirement or the block selection behavior, leaving those to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the architecture the parameters drive — degenerate 3' core over conserved residues, non-degenerate 5' consensus clamp grown to a target Tm, back-translated through a codon table — which gives meaning to table, clamp_tm, core_lengths and max_core_degeneracy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and product ('Design CODEHOP hybrid oligos from a block of aligned PROTEIN') and scopes it to a case ('homologues too diverged for nucleotide-level design'). It explicitly separates itself from the closest sibling: 'A different algorithm from the degenerate designer, not a variant of it.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the selecting condition directly — use when homologues are too diverged for nucleotide-level design — and names the alternative (the degenerate designer) while ruling it out as a variant. An agent has a clear routing rule without opening any schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_combinatorial_libraryAInspect

Design a combinatorial library in one step: SLOTS, each offering a bin of interchangeable parts, plus the CONSTANTS every member carries. The member set is the Cartesian product of the bins — one part per slot — pruned by design rules, and each surviving member is assembled by the SAME end-homology (Gibson/NEBuilder/In-Fusion) or plain-concatenation engine the single-construct tools use, so a member's construct is identical to assembling its parts on their own. It builds no second assembler; combinatorial Golden Gate lives in the grammar-assembly panel. Every pruned member is kept in the answer with the rule that removed it.

NameRequiredDescriptionDefault
binsYesthe variable slots: each {slot, parts} names a slot and the interchangeable parts (record names/ids, or wired `record` outputs) that may fill it. The member set is the Cartesian product across bins.
rulesNoj5/Eugene design rules that prune combinations: {kind:'notWith',a,b} (never together), {kind:'with',a,b} (if a then b), {kind:'notMoreThan',part,count} (at most count copies, constants included). Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
topologyNoGibson only: which products to enumerate per member. Values: circular (Circular), linear (Linear), both (Both). Advanced.circular
chemistryNo`gibson` is terminal-homology assembly (Gibson/NEBuilder/In-Fusion/homology, one engine); `concat` is a deterministic head-to-tail join with no homology or digest. Values: gibson (End homology (Gibson)), concat (Concatenation).gibson
constantsNoparts every member carries, assembled before the slot choices — the backbone and any fixed linker.
max_membersNocap on Cartesian members enumerated, before pruning. Advanced.
min_homology_bpNoGibson only: shortest terminal homology that counts as a join. In bp. Advanced.

Output Schema

NameRequiredDescription
builtYesmembers that closed at least one construct
prunedYesevery combination removed before assembly, each with the rule that removed it — never dropped silently
recordYesthe first member's construct, as a record
membersYesevery built member: its slot→part lineage, the parts assembled, the construct(s) and any flaws
readingYeswhat was enumerated, built and pruned, read off the run
cartesianYesCartesian product size, before pruning (the product of the bin sizes)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safe non-read-only/non-destructive/non-open-world profile, and the description adds genuinely new behavioral facts: members are pruned by rules, pruned members are retained in the answer together with the removing rule, and a member's construct is byte-identical to assembling its parts individually. Those are the things an agent would otherwise discover only after calling. Auth, failure modes and the max_members cap are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four front-loaded sentences that build the mental model in the right order — model, enumeration, pruning, engine identity. The clause 'It builds no second assembler' is a stylistic flourish but earns its place as the differentiation from the assembly tools; the trailing Golden Gate note could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter coverage, the description carries only the conceptual burden, and it does so well: enumeration, pruning, retained pruned members, and engine equivalence are all covered. Minor gaps remain around scale (the max_members cap and its behavior when exceeded) and error handling, which the description never touches.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real conceptual meaning: bins are the variable slots, the member set is their Cartesian product with one part per slot, and constants are assembled before slot choices. That framing disambiguates the two most error-prone inputs beyond the terse schema text. It says nothing about topology, chemistry or min_homology, which remain schema-only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb+resource ('Design a combinatorial library') immediately backed by the exact model: SLOTS with interchangeable part bins plus CONSTANTS, expanded as a Cartesian product and pruned by rules. Exemplary sentence explicitly scopes it away from the single-construct assembly tools and states that combinatorial Golden Gate is handled elsewhere, so an agent can separate it from gibson_assemble/golden_gate_assemble 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says plainly to use this for the whole library in one step and that its members are assembled by the same engine as the single-construct tools, which tells the agent this supersedes looping over those tools. The exclusion ('combinatorial Golden Gate lives in the grammar-assembly panel') gives a clear when-not. It stops short of naming the specific sibling tool/path for the Golden Gate case, so routing there still requires inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_degenerate_primersAInspect

Design degenerate primers from a multiple-sequence ALIGNMENT - the 'amplify every homologue in this family' question, which a single-template designer cannot answer because it only ever sees one sequence. A faithful port of DegePrime (Hugerth et al. 2014). Wire an upstream align_sequences rows output straight in, or paste an aligned FASTA.

NameRequiredDescriptionDefault
seedNoseed for WRM's draw, so a run is REPRODUCIBLE. Upstream is unseeded, so the same alignment can give two answers; a design you cannot reproduce is not one you can order from. Only applies when algorithm is wrm. Advanced.
skipNobases excluded at each end of every sequence (`-skip`). In nt. Advanced.
limitNohow many pairs to return, best coverage first. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
lengthNooligomer length (DegePrime `-l`). In nt.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
algorithmNowhich search picks each window's oligo. `wrm` is DegePrime's own default and is randomised (hence `seed`); `exhaustive` is an exact branch-and-bound that GRADES the heuristics rather than letting them grade each other, and REFUSES a window too large to solve rather than guessing - the problem is NP-hard.wrm
alignmentNothe ALIGNED rows to scan, each `{ name, sequence }` with gaps preserved - wire an upstream `align_sequences` rows output here. Gaps carry information the scan reads, so an unaligned set is not a substitute.
min_depthNofewest gapless sequences a window needs before it is reported at all (`-depth`). Advanced.
iterationsNoWRM restarts (`-iter`). Only applies when algorithm is wrm. Advanced.
max_productNolongest product, in TRIMMED alignment columns. In col.
min_productNoshortest product, in TRIMMED alignment columns. In col.
trim_cutoffNocolumns occupied by less than this fraction of sequences are dropped before scanning. Trimming renumbers the alignment, which is why `keptColumns` comes back with the result. Advanced.
max_degeneracyNodegeneracy ceiling (`-d`) - how many distinct oligos the IUPAC code is allowed to stand for. Coerced DOWN when no combination of positions can multiply to it, and the run says so.
alignment_fastaNoan aligned FASTA to scan, when there is no upstream alignment to wire. Sequences must already BE aligned - equal length, gaps as `-`.
exhaustive_mer_limitNolargest number of distinct mers `exhaustive` will attempt before refusing a window. Only applies when algorithm is exhaustive. Advanced.
min_fraction_matchingNoa window must bind at least this fraction of the spanning sequences to be a candidate - the coverage floor, and the number that decides whether 'every homologue' is true.

Output Schema

NameRequiredDescription
pairsYesthe primer pairs, best coverage first: both oligos in IUPAC letters, their degeneracy, the fraction of the family each binds, and the product span in trimmed columns
forwardYesthe best pair's forward oligo, IUPAC. Empty when no pair satisfied the constraints
reverseYesthe best pair's reverse oligo AS ORDERED (reverse-complemented). Empty when no pair satisfied the constraints
windowsYesevery scanned window with its degeneracy, entropy and coverage - the scan behind the pairs
pairCountYeshow many pairs were found
keptColumnsYeswhich columns of the ORIGINAL alignment survived trimming - trimmed column 40 is not alignment column 40, and this is the map back
degeneracyCoercedYestrue when the ceiling was lowered, so a run never silently answers a different question than it was asked
maxDegeneracyUsedYesthe degeneracy ceiling actually applied - LOWER than asked when no combination of IUPAC positions can multiply to the request

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds meaningful context beyond them: it identifies the tool as a faithful DegePrime port and stresses that gaps carry information the scan reads, which signals behavioral expectations. It does not restate what the schema already says about refusal/coercion behavior, but it adds real domain framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose and the differentiator before the provenance note. The parenthetical about single-template designers is slightly expansive but earns its place by reinforcing the routing decision. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. With 17 parameters at 100% schema coverage, the description only needs to convey purpose, input modes, and the alignment requirement, all of which it does. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by specifying that the alignment input accepts an upstream align_sequences `rows` output directly, clarifying the shape and provenance of the alignment/alignment_fasta parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Design degenerate primers from a multiple-sequence ALIGNMENT') and immediately frames the distinguishing use case: amplifying every homologue in a family. This separates it from single-template siblings like design_primers and design_primer_pairs 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states when this tool applies (multi-template family amplification) versus when a single-template designer suffices, and tells the agent how to feed it ('wire an upstream align_sequences rows output straight in, or paste an aligned FASTA'). The alternative is described by class rather than named as a specific sibling tool, so it falls just short of fully explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_expression_variantsAInspect

The expression-design deliverable: several coding sequences for one protein, each variant following a different published strategy (maximise codon adaptation, match the host's codon usage, harmonise with the native host, or preserve the initiation region), each scored by an engine — CAI, GC, the folding energy of the Kudla -4..+37 initiation window, and rare codons. It returns the comparison rather than one answer, because the strategies disagree about what limits expression and the researcher picks. Refuses a frame-shifted CDS, an internal stop or a missing host table rather than optimising nonsense.

NameRequiredDescriptionDefault
cdsNothe coding sequence to redesign, in frame and start-codon first. Unset falls back to THE SELECTION, on the strand the selection or its matching annotation states, then to the whole open record.
seedNoseed for the solver's random draws, so a listed variant can be regenerated exactly. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
gc_maxNomaximum GC fraction (0-1); set with gc_min. Advanced.
gc_minNominimum GC fraction (0-1); set with gc_max. Advanced.
featureNoredesign this annotated CDS or gene by NAME instead of the selection, exactly as `codon_usage_analysis` takes one. Its own strand is used. Takes precedence over the selection; `cds` still wins over both.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
posturesYeswhich strategies to design, in order. max_cai = every amino acid takes the target host's single most-used codon; match_usage = reproduce the target host's synonymous-codon distribution rather than its single best codon, so rare codons stay at their natural rate; harmonize = put each codon at the same relative adaptiveness it had in the gene's native host, so the elongation rhythm (and any pause the protein folds around) survives the transfer; native_initiation = leave nt +1…+37 of the coding sequence exactly as they are and match the host's codon usage only downstream, so the redesign cannot add secondary structure to the window Kudla found dominant. The set IS the deliverable — asking for one gets one, and there is no hidden default of three.
upstreamNothe bases immediately 5' of the CDS (the 5'UTR/RBS region). Kudla's window starts 4 nt BEFORE the start codon, so without this the folding energy is reported over a truncated window and says so.
gc_windowNowindow in bp the GC bounds apply over (whole sequence when unset). Advanced.
host_tableNothe TARGET host's codon-usage table, BY NAME, as the Codon Usage panel lists it. This is the way to pass a table: it resolves against the tables loaded in this project, so the numbers come from a table someone built or fetched. Leave unset and the active table is used.
rare_belowNowithin-family frequency below which a codon counts as RARE, for the report only — it adds no constraint. Omit and no rare-codon count is reported, which is the honest answer: "rare" has no host-independent definition.
native_tableNothe gene's NATIVE host codon table, BY NAME from this project's loaded tables — required only for the `harmonize` posture, which matches relative adaptiveness BETWEEN two hosts. It must be a DIFFERENT table from `host_table`: harmonising a host against itself is a difference of zero.
genetic_tableNogenetic code for the translation constraint (default Standard). Advanced.Standard
avoid_patternsNoliteral patterns (restriction sites, homopolymers) every variant must not contain.
host_table_tsvNoONLY for a table you are pasting yourself, measured elsewhere — prefer `host_table`, which names one this project already has. Do NOT write a table out from memory: codon frequencies are measured data, and a typed one is indistinguishable from a real one in the result. TSV: codon<TAB>count. Advanced.
host_table_nameNohow to name that table on every score it produced (e.g. "E. coli K-12, Kazusa"), so a reported CAI is attributable.
native_table_tsvNoONLY for a native table you are pasting yourself — prefer `native_table`. Do not write one out from memory (see `host_table_tsv`). TSV: codon<TAB>count. Advanced.

Output Schema

NameRequiredDescription
regionYeswhat was actually redesigned — the selection when there is one, otherwise the whole open record, naming the STRAND and where it came from. Empty when the caller passed `cds` outright, because then there is no region, only a sequence they named
reportYesthe whole comparison as Markdown — table, what each design trades, the provenance of every number, and the sequences — so it survives outside the transcript
proteinYesthe protein every variant encodes — asserted per variant, not assumed
recordsYesthe variants as sequence RECORDS, so the run leaves the user holding the designs it describes
skippedYespostures that were asked for and could not run, each with the reason
best_caiYesthe posture reaching the highest CAI — a ranking on ONE axis, never a recommendation
distinctYeshow many of the variants are DIFFERENT sequences
variantsYesone entry per posture: its sequence, what it was optimising for, what it trades away, and every score with the engine that produced it
least_structuredYesthe posture whose initiation window folds least tightly (the highest, least-negative dG)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only covering the safe/non-destructive profile, the description supplies substantial extra behavior: it refuses a frame-shifted CDS, an internal stop, or a missing host table, and it discloses that folding energy is reported over a truncated window when `upstream` is absent. This is well beyond what readOnlyHint/openWorldHint/destructiveHint convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the deliverable, then the strategy list, then the output rationale, then the refusal behavior — well ordered. It is dense and the parenthetical strategy enumeration is heavy, but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still covers the multi-variant nature, the scoring engines, validation refusals, and the truncation caveat. Nothing an agent needs to invoke this 18-parameter tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 18 parameters in detail (postures, host_table, rare_below, etc.). The description adds no parameter-level syntax or defaults beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: it produces 'several coding sequences for one protein', each following a named published strategy, and states it 'returns the comparison rather than one answer'. This substantively separates it from single-output codon tools like back_translate or codon_optimality without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for why and when to reach for this tool ('the strategies disagree about what limits expression and the researcher picks'), plus precedence rules reflected in the schema (cds wins over feature wins over selection). It does not name a specific alternative sibling, so it stops short of full 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.

design_free_codesA
Read-only
Inspect

Generate INDEL-correcting barcodes — FREE divergence codes (Hawkins et al., PNAS 2018) — by reserving each codeword's error sphere over the whole 4^k space, so the guarantee survives an insertion or deletion rather than only a substitution. Or prune a set you already own down to a valid FREE code, and see which members' decode spheres collided. This is a different construction from design_barcodes' distance-based search, and answers a different question: a Levenshtein-distance set corrects indels between two barcodes, a FREE code corrects them in the read.

NameRequiredDescriptionDefault
modeNogenerate a new code, or prune an existing set down to a valid one. Values: generate (Generate a code), prune (Prune a set to a valid code).generate
limitNostop after this many codewords. 0 = take the whole code. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
lengthNobarcode length k. The search is over the whole 4^k space, so cost rises steeply with it.
max_gcNoreject a candidate above this GC fraction. 0 = no limit. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
barcodesNothe set to prune — required when `mode` is `prune`, ignored when generating. Only applies when mode is prune.
reservedNocodewords already in use, whose decode spheres are claimed BEFORE generation — this is how a code is EXTENDED rather than regenerated, so what comes back is compatible with the indexes a lab already owns.
max_errorsNohow many insertions/deletions/substitutions each codeword must tolerate. Each extra error costs most of the code.
max_homopolymerNoreject a candidate with a run of this many identical bases. 0 = no limit. Advanced.

Output Schema

NameRequiredDescription
countYeshow many codewords came back
droppedYesprune only: the codewords removed because their decode spheres collided — a user pruning their own set needs to know which indexes to stop using, not how many
barcodesYesthe codewords — generated, or the ones that survived pruning

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a safe, non-destructive, closed-world read/compute operation, so the bar is lower. The description still adds real value: it explains that the search spans the whole 4^k space (cost implication), that prune mode reports colliding decode spheres, and that `reserved` enables extension compatible with existing lab indexes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and immediately followed by the sibling contrast. The prose is dense and jargon-heavy ("error sphere," "decode spheres") but each sentence carries distinct information, so there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and full annotation set exist, so return values and safety need not be described. For a 10-parameter tool with nested objects and two modes, the description conveys the domain model and the sibling distinction well; the main omission is explicit prerequisite/format guidance for the prune input, which the schema partly covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including the mode enum and the `reserved`/`barcodes` semantics. The description reinforces the conceptual model (error-sphere reservation) but adds little parameter-level detail beyond what the schema supplies; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Generate INDEL-correcting barcodes — FREE divergence codes") and covers both modes (generate and prune). It explicitly distinguishes itself from design_barcodes by naming the sibling and stating the difference in construction (FREE error-sphere reservation vs. Levenshtein-distance search), so an agent can route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for both branches: generate a new code, or prune an owned set down to a valid one. It also names the alternative (design_barcodes) and articulates the selection question (indel correction between barcodes vs. in the read). It stops short of explicit "use X instead when..." routing or prerequisite/permission notes, so a 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_fusion_site_primersA
Read-only
Inspect

Design the PCR primers that ADD Type-IIS fusion sites to a part: enzyme site, spacer and the four-base overhang you chose, on a Tm-matched annealing footprint. This is how a sequence that is not yet a Golden Gate part becomes one, and it is the other half of check_golden_gate_parts — that says which parts are unusable, this makes one usable.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNothe Type-IIS enzyme the assembly will use.BsaI
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe template to amplify — wire a record, name a library document, or leave unset to use the open record.
target_tmNotarget annealing temperature for the template-binding footprint. In °C.
buffer_basesNo5' buffer bases outside the recognition site, so the enzyme has somewhere to sit (NEB recommends 6 nt). Advanced.AAAAAA
left_overhangYesthe top-strand overhang to leave at the START of the released part — its length must match the enzyme's own overhang.
right_overhangYesthe top-strand overhang to leave at the END of the released part.

Output Schema

NameRequiredDescription
forwardYesthe forward primer, 5'→3': buffer, recognition site, spacer, your overhang, then the annealing footprint
productYeswhat the pair amplifies, tails included
reverseYesthe reverse primer, same construction on the other end
forwardTmYesmelting temperature of the forward primer's ANNEALING footprint — the tail does not bind the template on the first cycle
reverseTmYesthe same for the reverse primer; the pair is matched, so a gap between these two is the thing to notice
releasedPartYeswhat the enzyme cuts OUT of that product — the part that actually enters the assembly, carrying your two overhangs

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: it specifies the output composition (enzyme site + spacer + four-base overhang + Tm-matched annealing footprint) and its role in the Golden Gate workflow. It does not mention failure conditions such as overhang/enzyme length mismatches, which the schema handles instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. The core action and the produced construct are front-loaded, and the second sentence earns its place by routing the agent to the complementary sibling tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema description coverage, the description need not explain return values or parameters. It covers the workflow context that structured fields cannot express — where this fits relative to check_golden_gate_parts. A minor gap is that the enzyme/overhang length consistency requirement is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented, including target_tm, buffer_bases and the overhang fields. The description adds only the implicit hint that the overhang is four bases and that the Tm is matched to the footprint — no syntax, constraints, or defaults beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — designing PCR primers that add Type-IIS fusion sites (enzyme site, spacer, overhang) on a Tm-matched footprint — and explicitly differentiates itself from the sibling check_golden_gate_parts, calling itself 'the other half' of that check. An agent can distinguish it from design_gibson_primers or design_primer_pairs 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition — a sequence that is not yet a Golden Gate part needs to become one — and names the complementary tool (check_golden_gate_parts says what is unusable, this makes one usable). It stops short of naming competing primer-design siblings to avoid (e.g. design_gibson_primers, design_multisite_primers), so the exclusions are implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_gene_fragment_orderA
Read-only
Inspect

Write the sheet IDT's gene-fragment PLATE upload takes for one or more designed fragments: one worksheet per 96-well plate, wells in the template's own order, and the template's four columns (well, name, sequence, 5' phosphorylation). A fragment outside the product's length range, unnamed, or carrying a non-IUPAC base is refused by name; one outside the product's published GC or homopolymer limits is kept and named, because a vendor publishes what it supports, not what it rejects. It WRITES A FILE and sends nothing: no account, no key, no network call.

NameRequiredDescriptionDefault
namesNoa name per fragment, in the same order. Required with `sequences`: a well is ordered by name, so an unnamed fragment is refused rather than numbered.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
featureNoorder a named feature of the open record instead of the whole record: the insert rather than the vector it sits in. Advanced.
productNowhich IDT fragment product to order the fragments as. It sets the length range a fragment must fall in, and eBlocks take a per-plate minimum. Values: idt-gblocks (gBlocks Gene Fragments (125–3,000 bp)), idt-eblocks (eBlocks Gene Fragments (300–1,500 bp)).idt-gblocks
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequencesNothe fragments to order, 5'→3'. Leave unset to order the open record, or the current selection or named `feature` of it, under the record's name.
plate_nameNothe plate's name, which becomes the worksheet's name. Several plates get ' (2)', ' (3)' appended.Plate 1
phosphorylateNoask for 5' phosphorylation on every fragment. IDT offers it for blunt cloning only.

Output Schema

NameRequiredDescription
rowsYesevery plate as header-first rows in the template's column shape, keyed by worksheet name: what the .xlsx holds
sheetsYesone entry per PLATE: its worksheet name and every laid-out well, each with the published limits it sits outside
columnsYesthe template's header row
profileYesthe vendor profile the length range came from, with its page and retrieval date
readingYeswhat the order is, generated from the laid-out plates
refusedYesevery fragment left OUT, with the reason
plateCountYeshow many plates the fragments needed
plateMinimumYesset when the product takes a minimum per plate and a plate falls under it; empty otherwise

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing validation behavior: out-of-range/unnamed/non-IUPAC fragments are refused by name, while GC/homopolymer violations are kept and flagged, with the rationale. The 'WRITES A FILE and sends nothing' line usefully reinforces openWorldHint=false, though writing a file sits in mild tension with readOnlyHint=true and is not reconciled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler, and the artifact definition is front-loaded ahead of the validation and no-network clauses. The first sentence is dense and slightly awkwardly phrased, which costs a little readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the artifact shape, plate/worksheet naming behavior, validation semantics with rationale, and the absence of any vendor contact; the output schema handles return values and the input schema handles the rest. Nothing an agent needs before calling this is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by mapping inputs onto the output: wells follow the template's own order and the four columns are well, name, sequence and 5' phosphorylation. That clarifies how names, sequences, and phosphorylate combine in a way no single parameter description does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact: 'Write the sheet IDT's gene-fragment PLATE upload takes', plus the per-plate worksheet layout and the four template columns. An agent can tell this apart from sibling tools like design_oligo_plate_order because the output format (96-well plate upload sheet, not an oligo order) 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'for one or more designed fragments' plus the explicit 'sends nothing: no account, no key, no network call' tells the agent this is a local sheet generator, not an ordering action. It stops short of naming the alternative tool to use for oligo plates or of any when-not-to-use condition, so it is clear context without explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_genetic_circuitA
Read-only
Inspect

Design a genetic circuit that computes: give it a logic function and it synthesizes a NOR/NOT netlist, assigns real characterized repressor gates from a Cello UCF library, predicts the dynamic range between ON and OFF, and emits the construct's DNA. The gate parameters are MEASURED, from the published libraries, with the host and growth conditions they were measured under reported alongside — never estimated here.

NameRequiredDescriptionDefault
logicNothe function the circuit computes: a named gate (NOT, AND, OR, NAND, NOR, XOR, XNOR, AND3, OR3, MAJORITY-3), or a truth table as one bit per input combination with the first input most significant (AND is `0001`).AND
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
groupsNocomma-separated repressor groups the search may draw on. Narrowing this is how a large search is made tractable — and how a gate you cannot obtain is kept out of the design. Advanced.
libraryNothe characterized gate library to build from. Each was measured in one host under one growth condition, and the prediction inherits both.Eco1C1G1T1
sensorsNocomma-separated input sensors the search may use. Leave unset to consider every sensor the library carries. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
reportersNocomma-separated output reporters the search may use. Leave unset to consider all of them. Advanced.
max_assignmentsNorefuse rather than search past this many assignments. A ceiling, not a target: the search is EXHAUSTIVE, so it is never sampled — a best-of-some reported as a best-of-all is a wrong answer rather than a slow one. Advanced.

Output Schema

NameRequiredDescription
dnaYesthe construct broken into devices and parts, each with its own sequence, plus the solved device order and every placement constraint the library declares
scoreYesthe predicted dynamic range: the dimmest ON output divided by the brightest OFF, across every input combination
curvesYeseach assigned gate's transfer function sampled around its own midpoint, with this design's operating points on it — one curve per physical gate that won a row, so a group won by two gates gives two curves
netlistYesthe NOR/NOT netlist synthesized from the logic function, and the table it was checked to compute
sequenceYesthe construct's DNA, the devices concatenated in the order the library's placement rules put them
toxicityYeswhat the circuit costs the host: relative growth per truth-table row, the worst row, and per-gate detail — plus how many of the assigned gates actually carried a measured growth table, because a growth of 1.00 means something different when nothing was measured
librariesYesevery shipped library with its host, growth conditions and gate count, so a caller can choose one
placementYeshow the device order was solved: the arrangement including the library's landing pads, how many of its placement constraints bound this construct, and any rule whose operator is not implemented
assignmentYeswhich sensors, gate groups and reporters the winning design uses
truthTableYesevery input combination with its logic values and its analog levels in RPU, per node
explanationYesthe derivation chain: conclusion, interpretation, earned cautions and machinery, generated from this run
curvesFigureYesthe curves above drawn as the panel draws them: one panel per gate, all on the same log-log axes, the response as a line and this design's operating points on it, ON in bluish green and OFF in vermillion

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that the tool is read-only, non-destructive, and closed-world, so the safety profile is covered. The description adds meaningful behavioral context: gate parameters are measured from published libraries, host and growth conditions are reported, and outputs include a predicted dynamic range and DNA construct.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the opening clause, and the second sentence adds only the key provenance caveat. Every clause describes a concrete capability or behavioral guarantee.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex design tool, the description covers the core pipeline, output artifacts, and the measured-parameter caveat; the output schema and rich parameter schema cover return format and parameter details. It could mention the exhaustive search ceiling, but that is adequately documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries detailed semantics for logic, library, groups, sensors, reporters, and max_assignments. The description reinforces the central role of the logic function and library provenance but does not add parameter syntax or constraints beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource—design a genetic circuit—and enumerates the concrete outputs: NOR/NOT netlist, assigned repressor gates, ON/OFF dynamic range, and construct DNA. This clearly distinguishes it from generic sequence or part design siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'give it a logic function' provides a clear triggering condition for use, and the description implies it is the tool for circuit-level design rather than part-level design. It does not explicitly name when to avoid it or which sibling to use instead, so it falls 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.

design_gibson_primersA
Read-only
Inspect

Design the PCR primers that CREATE the terminal homology a Gibson/NEBuilder/In-Fusion assembly needs: a Tm-matched pair per fragment, each carrying the 5' overhang that fuses it to its neighbour in the order given (pydna assembly_fragments). This is the step that turns a planned assembly into oligos you can order.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
overlapNohomology shared between two adjacent fragments. pydna splits it across the junction, so each primer's 5' tail is about half this. In bp.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
circularNoclose the ring: the last fragment also overlaps the first.
fragmentsNothe fragments to join, IN ASSEMBLY ORDER — wire upstream `record` outputs here, or list library document names/ids.
target_tmNotarget annealing Tm for each primer's 3' footprint. In °C.
conditionsNosalt, magnesium, dNTP and oligo concentrations plus the salt-correction method the target Tm is measured in. Left unset it is filled from your reaction-conditions settings, and falls back to pydna's Taq defaults when there are none. Advanced.
min_footprintNoshortest annealing footprint the designer may settle for (pydna's `limit`). In nt. Advanced.
include_subjectNoput the node's subject first, as the backbone.
synthesis_scaleNocatalogue product to price the oligos at (an `oligo-list-prices` record id); `auto` prices each at the cheapest product whose published length range covers it. Advanced.auto

Output Schema

NameRequiredDescription
costYeswhat the oligo set costs at a vendor's published list price: per oligo the product, per-base rate and price, plus the set total, the oligos no listed product covers, and the date the prices were read. One supplier's list price, not a quote
overlapYeshomology designed between neighbours (bp)
primersYesper fragment: the tailed amplicon its primers make, that amplicon's length, and both primers with tail, footprint, length and footprint Tm
circularYeswhether the ring was closed
ampliconsYesthe PCR products these primers make, as sequence RECORDS carrying each fragment's features at their shifted positions. THIS is what assembles: wire it into `gibson_assemble.fragments`, not the untailed fragments
costTotalYeslist-price total for the oligos that could be priced (see `cost.unpriced` for any that could not)
conditionsYesthe buffer the target Tm was measured in — salt, magnesium, dNTPs, oligo concentration and the salt-correction method — or a note saying pydna's defaults were used
primerCountYesoligos to order (two per fragment)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: a Tm-matched pair per fragment, 5' overhangs split roughly half from the shared overlap, fragment order determining junctions, and that the output is orderable oligos.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and mechanism, then a single sentence on payoff. No filler and nothing repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and a fully documented 10-parameter schema, the description need only establish purpose and workflow position, which it does. A nod to prerequisites (fragments must be in hand, backbone/insert decisions) would make it fully complete for a tool with this many advanced knobs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains overlap, target_tm, fragments and conditions in detail. The description reinforces the critical semantic that fragment list order defines the junction topology, but adds no syntax or format detail beyond that, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Design the PCR primers that CREATE the terminal homology' — and pins it to Gibson/NEBuilder/In-Fusion assembly with the pydna assembly_fragments backend. That scope distinguishes it from generic primer designers and from the assembly-only sibling gibson_assemble.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence 'This is the step that turns a planned assembly into oligos you can order' implies its place in the workflow (after assembly planning, before ordering). However, it never names an alternative tool or states when NOT to use it (e.g. versus design_fusion_site_primers or design_primer_pairs), so routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_hcr_probesA
Read-only
Inspect

Design HCR v3.0 split-initiator probe pairs against the subject: tile its reverse complement into 52 nt windows, drop windows with C or G runs, a stable hairpin, G+C or RNA:DNA free energy outside their windows, or (given a bowtie2 alignment of the tiles) more than one genome hit, then pick non-overlapping tiles closest to the target free energy and split each around a 2 nt gap into an odd and an even probe carrying half of the chosen amplifier's initiator. Each stage reports how many tiles it kept.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_gcNohighest percent G+C of a tile. In %.
min_gcNolowest percent G+C of a tile. In %.
channelNoHCR amplifier whose split initiator the pair carries; one channel per target in a multiplexed experiment.B1
dtm_maxNolargest allowed difference between the halves' melting temperatures. In °C. Only applies when dtm_filter is true. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_gibbsNoleast stable RNA:DNA free energy to accept. In kcal/mol.
min_gibbsNomost stable RNA:DNA free energy to accept (at 37 °C, 0.33 M Na⁺). In kcal/mol.
tile_sizeNolength of the target window each pair covers, both halves and the 2 nt gap. In nt. Advanced.
dtm_filterNoalso require the two halves' melting temperatures to agree. Advanced.
max_probesNomost probe pairs to return.
target_gibbsNofree energy the selection ranks tiles by closeness to. In kcal/mol.
alignment_samNoSAM from bowtie2 -k 3 -f of the tiles FASTA this tool returns, against your genome or transcriptome. Without it no tile is checked for uniqueness and the result says so.
max_hairpin_tmNodrop a tile whose primer3 hairpin melts at or above this. In °C. Advanced.
max_run_lengthNowindow length for the C and G run check. In nt. Advanced.
num_hits_allowedNomost alignments a tile may have and still be kept (its own locus counts as one). Only applies when alignment_sam is set.
max_run_mismatchesNobases in that window allowed to differ from the run base. In nt. Advanced.

Output Schema

NameRequiredDescription
pairsYesthe selected probe pairs, ranked by closeness to the target free energy, each with both oligos, its 1-based start, G+C, Tm, half-Tm difference, free energy and genome hits
stagesYeshow many tiles each stage kept, in pipeline order
pairCountYeshow many probe pairs were selected
orderTableYesevery odd then every even oligo as a Name/Sequence table for plate ordering
tilesFastaYesthe tiles that pass the run and hairpin checks, as FASTA, for bowtie2 -k 3 -f
explanationYesthe derivation chain: conclusion, interpretation and machinery, generated from this run

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only safety profile, yet the description adds substantial behavioral context: the sequential filter stages, that each stage reports tiles kept, and critically that without alignment_sam no uniqueness check occurs and 'the result says so.' This goes meaningfully beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the second sentence covers reporting behavior. It is dense — one long sentence enumerating every filter — but each clause describes a real pipeline stage, so little is wasted despite the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations carry the safety profile. The description supplies the algorithm, the parameter interplay, and the important edge case of a missing alignment, leaving it nearly complete for a 17-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds value by tying parameters into a coherent pipeline — the 52 nt tile and 2 nt gap mapping to tile_size, the amplifier initiator to channel, and the free-energy filters to their windows. It explains how parameters interact rather than restating them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Design HCR v3.0 split-initiator probe pairs' — and then details the exact algorithm, so an agent can immediately distinguish it from the many sibling design_*_probes tools (design_ish_probes, design_padlock_probes). The scope is concrete rather than tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the HCR v3.0 technique and the optional bowtie2 alignment workflow, but it never states when to choose this over sibling probe-design tools or what prerequisites (e.g., a subject record) are required. Usage is inferable from the workflow description rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_ish_probesA
Read-only
Inspect

Design an in-situ hybridization probe against the subject: tile it into candidate oligos that meet a melting-temperature, G+C and composition specification, screen them for off-target binding against an alignment and for k-mers abundant in a reference, and gather the survivors into the set that images best. Merges OligoMiner's tiling, its trained specificity model and its k-mer filter with iFISH's probe-set selection; each stage reports what it removed and why.

NameRequiredDescriptionDefault
dnac1Noconcentration of the higher-concentration strand, typically the probe, in the melting-temperature calculation (OligoMiner `--dnac1`). In nM.
dnac2Noconcentration of the lower-concentration strand, typically the target (OligoMiner `--dnac2`). The Tm uses dnac1 − dnac2/2, so equal values halve the effective concentration. In nM.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_gcNohighest percent G+C to accept. In %.
max_tmNohighest melting temperature to accept. In °C.
min_gcNolowest percent G+C to accept. In %.
min_tmNolowest melting temperature to accept, AFTER the formamide correction. In °C.
originNocoordinate of the subject's first base, when it is a window cut from a larger sequence. Read from a UCSC-style `range=` header when the subject carries one. Advanced.
probesNohow many probe sets to return. Only applies when oligos_per_probe is set.
sodiumNomonovalent cation concentration of the hybridization buffer. In mM.
overlapNoreport every window that qualifies, including overlapping ones. Off by default because overlapping oligos cannot be used together in one probe. Advanced.
rank_byNofeature that ranks the sets inside that band. Values: centrality (Centrality on the region), size (Compactness), homogeneity (Even spacing). Only applies when oligos_per_probe is set. Advanced.size
spacingNobases forced between consecutive oligos. In nt. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
filter_byNofeature that defines the band of acceptable sets. Values: centrality (Centrality on the region), size (Compactness), homogeneity (Even spacing). Only applies when oligos_per_probe is set. Advanced.centrality
formamideNoformamide in the hybridization buffer; it lowers every melting temperature by about 0.65 °C per percent. In %.
kmer_dumpNo`jellyfish dump` of a genome's k-mer dictionary, for a reference too large to count here: `jellyfish count -m 18 -L 5` then `jellyfish dump -c -L 5` keeps only the k-mers a screen at 5 acts on. Advanced.
max_lengthNolongest oligo to accept; the tiler grows a window until one fits, so a wide range yields more probes. In nt.
min_lengthNoshortest oligo to accept. In nt.
prohibitedNocomma-separated subsequences an oligo may not contain; the default bans homopolymer runs, which hybridize promiscuously. Advanced.AAAAA,TTTTT,CCCCC,GGGGG
kmer_lengthNok, the k-mer length counted in kmer_reference (OligoMiner's README builds 18); a dump carries its own. In nt. Only applies when kmer_reference is set.
screen_modeNotrained model (recovers usable probes near repeats) · unique alignment only (strict) · no alignment at all (for a sequence that should be absent). Values: lda (Trained model), unique (Unique alignment only), zero (No alignment at all). Only applies when alignment_sam is set.lda
alignment_samNoSAM the candidates were aligned with, for off-target screening. Without it the oligos are returned UNSCREENED and the result says so.
kmer_canonicalNocount a k-mer and its reverse complement as one (jellyfish -C). Off as OligoMiner's dictionary is; for a dump it must match how the dictionary was counted. Advanced.
kmer_referenceNoFASTA of the reference to count k-mers in, for OligoMiner's k-mer screen. Counted here, so a whole genome belongs in kmer_dump instead. Without either the oligos are returned with k-mer abundance UNCHECKED and the result says so.
kmer_thresholdNodrop an oligo holding any k-mer that occurs this many times or more in the reference.
filter_thresholdNowidth of the band around the best set, as a fraction of its own value. Only applies when oligos_per_probe is set. Advanced.
oligos_per_probeNooligos to gather into one probe. Leave unset to return every surviving oligo instead of a set.
hybridization_temperatureNotemperature the specificity model was trained at. Only these six exist; the coefficients change sign across the range, so an intermediate value is a different model rather than a blend. In °C. Only applies when alignment_sam is set.
max_off_target_probabilityNokeep an oligo whose modelled chance of a real off-target site is below this. Only applies when alignment_sam is set. Advanced.

Output Schema

NameRequiredDescription
kmerYesthe k-mer screen's reading of each oligo it saw: its start, the highest count charged to it, and whether it was kept. Absent when no k-mer reference or dump was given
oligosYesevery oligo that survived all stages, in target order
probesYesthe chosen probe sets, best first, each with its oligos and its three scores
stagesYeswhat each stage took in, put out, and removed - with the reasons named
coverageYesthe coverage track, gaps, spacings and the Tm/G+C distributions a renderer draws
oligoCountYeshow many oligos survived
explanationYesthe derivation chain: conclusion, interpretation and machinery, generated from this run
coveredFractionYesfraction of the target covered by at least one surviving oligo (0-1)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, non-destructive and closed-world, so the safety bar is low. The description adds real behavioral context beyond them: it discloses the multi-stage pipeline and that each stage reports what it removed and why, and that survivors are gathered into the set that images best — enough for an agent to understand that partial results and per-stage attrition diagnostics are expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and the subject, then the pipeline in execution order. The closing clause about merging OligoMiner's tiling/model/k-mer filter with iFISH's selection is the weakest part — provenance rather than instruction — but it is short and roughly earns its place by explaining the screen-mode choices.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 30 parameters, no required inputs and an output schema, the description does what it needs to: it lays out the stage sequence so the agent understands which parameter groups interact, without duplicating return-value documentation. Only the sibling routing and the interaction between oligos_per_probe being set or unset are under-explained at the description level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every one of the 30 parameters carries a substantive description with units, defaults and stage conditions, so the schema carries the burden. The description's contribution is only indirect — grouping behavior into Tm/GC/composition, off-target screening, k-mer screening and set selection — which does not add meaning beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — designing an in-situ hybridization probe against the subject — and enumerates the pipeline stages (tiling, Tm/GC/composition filtering, off-target screen, k-mer screen, probe-set selection). It is clear what the tool does, but in a sibling set containing design_hcr_probes, design_merfish_probes, design_xenium_probes and design_padlock_probes it never names which of those it replaces or how it differs beyond the OligoMiner/iFISH lineage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the tool's chemistry (ISH probes) and by the conditions embedded in the description (screening requires an alignment, k-mer filtering requires a reference), but there is no explicit when-to-use, when-not, or routing to a sibling probe designer. With four other probe-design tools in the list, the agent is left to infer the choice from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_knockout_packageAInspect

The complete build package for a knockout or knock-in, as one object: guides inside the target, an off-target census for the chosen one within this molecule, a repair template with real homology arms, a screening PCR whose primers sit OUTSIDE the arms, the protocol in order, the fragments and oligos to buy, and every coordinate ready for the map. Two donor modes: by default the arms sit on the cut (a point insertion — the target's own sequence is kept on both sides), and with replace_target the arms flank the whole target and it is deleted, which is the mode for replacing one CDS with another (an empty insert then deletes the target cleanly). It refuses rather than guessing: no PAM in the target, arms that run off a linear molecule, a screening amplicon that cannot clear the arms, or a non-DNA insert; and in the default mode it WARNS when an insert lands inside the target, because that is a fusion rather than a replacement. Arm length, screening flank and guide count are yours to state, because each follows the delivery method and the organism.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
guidesNohow many guides to carry into the package, best-scoring first. The rest are the alternatives, not filler.
insertNosequence to place at the cut (a tag, a selection cassette). Leave empty for a scarless rejoin — the package then WARNS that the two screening products are the same length.
subjectNothe molecule to edit — wire a record or name a library document; leave unset to edit the open record.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
nucleaseNothe nuclease (PAM + spacer length) to scan the target for. Values: SpCas9 (SpCas9: NGG (3')), SpCas9-NG (SpCas9-NG: NG (3')), SpG (SpG: NGN (3')), SpRY (SpRY: NRN (3')), xCas9 (xCas9: NG (3')), SaCas9 (SaCas9: NNGRRT (3')), SaCas9-KKH (SaCas9-KKH: NNNRRT (3')), AsCas12a (AsCas12a: TTTV (5')), LbCas12a (LbCas12a: TTTV (5')), enAsCas12a (enAsCas12a: TTTV (5')).SpCas9
primer_tmNotarget melting temperature for the screening primers [°C] — follows your polymerase and buffer. In °C. Advanced.
arm_lengthYeshomology-arm length on EACH side of the cut, in bp. A protocol decision that follows the delivery method, so there is no default: state what yours needs. The published working range is 100-800 (100-400 nt synthetic, up to ~800 bp cloned). In bp.
target_endYesend of the gene to knock out (0-based, exclusive). In bp.
insert_nameNowhat the insert is called in the protocol and on the order form.
target_nameNowhat the target is called, so every mark, primer and order line names its subject.target
screen_flankYeshow far OUTSIDE the arms the screening primers must bind, in bp. Not decoration: a primer inside the arms amplifies the repair template as readily as the locus, so the assay cannot tell an edited colony from plasmid carry-over. In bp.
target_startYesstart of the gene to knock out (0-based, inclusive). In bp.
max_mismatchesNomismatch ceiling for the off-target search within this molecule. Advanced.
replace_targetNoreplace the WHOLE target region with the insert, arms flanking the target — the gene-replacement donor. Off (default): the arms sit on the cut and the target's own sequence is kept on both sides of the insert (a point insertion), so this must be ON to knock one CDS in for another. Empty insert + this = a clean deletion of the target. Advanced.
restriction_enzymesNocloning enzymes whose recognition site must NOT appear in a spacer. Advanced.

Output Schema

NameRequiredDescription
donorYesthe repair template: both arms with their genomic spans, the insert, and the junctions to sequence across
marksYesevery span this package names, ready for the map
orderYesthe fragments and oligos to buy, each with the design decision it comes from
stepsYesthe protocol in the order it is done
chosenYesthe guide the package was built around
guidesYesevery guide inside the target, scored, best first
recordYesthe repair template as a sequence record, so the run leaves the user holding the thing to order
reportYesthe whole package as Markdown — protocol, order form, guides, template, screening and marks — so it survives outside the transcript
screeningYesthe screening PCR: the pair, the two product lengths, and the span they cover
offTargetsYesthe off-target census for the chosen spacer WITHIN this molecule, with the scope stated

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only stating readOnlyHint=false / destructiveHint=false / openWorldHint=false, the description carries substantial extra behavioral weight: it discloses four hard refusal conditions (no PAM, arms running off a linear molecule, un-clearable screening amplicon, non-DNA insert) and two warning behaviors (insert landing inside the target in default mode; identical-length screening products for a scarless rejoin). That is precisely the failure-mode disclosure an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and package contents are front-loaded in the first sentence, and the mode semantics, refusal cases, and required choices follow in a logical order. The prose is dense and runs long (~200 words in one block), but each sentence contributes a distinct behavioral or parameter fact rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists (so return values need not be explained), annotations cover the safety profile, and the schema fully documents all 16 parameters. The description closes the remaining gaps — donor mode semantics, refusal/warning behavior, and which parameters are user-decided — leaving nothing an agent needs to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description' Explanation of `replace_target` is nearly verbatim the schema's own wording, so it mostly duplicates structured data; its only additive value is the framing that arm_length, screen_flank and guide count are user-stated protocol decisions rather than defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names the specific verb+resource ('the complete build package for a knockout or knock-in') and then enumerates exactly what the single object contains — guides, off-target census, repair template, screening PCR, protocol, fragments/oligos, coordinates. This distinguishes it from sibling design tools such as crispr_design_guides or design_gibson_primers without requiring the agent 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear situational guidance: use the default mode for a point insertion and set `replace_target` 'to knock one CDS in for another', and it explains when an empty insert yields a clean deletion. It also enumerates refusal conditions. However, it never names an alternative sibling tool (e.g., crispr_design_guides for guides-only work), so routing is described by condition rather than by explicit alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_lamp_primersAInspect

Design LAMP (loop-mediated isothermal amplification) primer SETS - four core oligos (F3 · B3 · FIP · BIP) plus optional loop primers, judged against Eiken's own PrimerExplorer V5 criteria. Not a pair: LAMP needs six binding regions in the published order and the distances BETWEEN them are as much of the design as the oligos. Each set comes back with the arithmetic behind its rank.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
gc_maxNoGC FRACTION window, 0-1 (manual §2.3: "between about 40% to 65%") - upper bound. Unset = the preset for this template's GC class. Advanced.
gc_minNoGC FRACTION window, 0-1 (manual §2.3: "between about 40% to 65%") - lower bound. Unset = the preset for this template's GC class. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_setsNohow many sets to return, best first.
length_maxNolength window for the outer/inner binding regions (manual §4.2) - upper bound. Unset = the preset for this template's GC class. In nt. Advanced.
length_minNolength window for the outer/inner binding regions (manual §4.2) - lower bound. Unset = the preset for this template's GC class. In nt. Advanced.
region_endNo0-based inclusive end. Unset = the whole sequence. Advanced.
tm_loop_maxNoTm window for the loop primers LF / LB - upper bound. Unset = the preset for this template's GC class. In °C. Advanced.
tm_loop_minNoTm window for the loop primers LF / LB - lower bound. Unset = the preset for this template's GC class. In °C. Advanced.
loop_primersNodesign LF/LB as well. They are optional in LAMP and accelerate the reaction.
region_startNo0-based inclusive start of the region to design into (LAMP designs into a stretch, not a whole plasmid). Unset = the whole sequence; pass the selection's start to scope to it. Advanced.
tm_inner_maxNoTm window for F1c / B1c - the manual's "about 65 °C" - upper bound. Unset = the preset for this template's GC class. In °C. Advanced.
tm_inner_minNoTm window for F1c / B1c - the manual's "about 65 °C" - lower bound. Unset = the preset for this template's GC class. In °C. Advanced.
tm_outer_maxNoTm window for F2 / B2 / F3 / B3 - the manual's "about 60 °C" - upper bound. Unset = the preset for this template's GC class. In °C. Advanced.
tm_outer_minNoTm window for F2 / B2 / F3 / B3 - the manual's "about 60 °C" - lower bound. Unset = the preset for this template's GC class. In °C. Advanced.
loop_span_maxNo5' of F2 to 5' of F1 - the portion that forms the loop (manual §2.5: 40-60) - upper bound. Unset = the preset for this template's GC class. In bp. Advanced.
loop_span_minNo5' of F2 to 5' of F1 - the portion that forms the loop (manual §2.5: 40-60) - lower bound. Unset = the preset for this template's GC class. In bp. Advanced.
outer_gap_maxNoF3 to F2 and B3 to B2 gap. THE TWO AUTHORITIES DISAGREE here too: PrimerExplorer V5 says 0-60, the Eiken genome site 0-20 - upper bound. Unset = the preset for this template's GC class. In bp. Advanced.
outer_gap_minNoF3 to F2 and B3 to B2 gap. THE TWO AUTHORITIES DISAGREE here too: PrimerExplorer V5 says 0-60, the Eiken genome site 0-20 - lower bound. Unset = the preset for this template's GC class. In bp. Advanced.
end_stability_dgNothe terminal-6-base stability rule (manual §2.2: the ΔG "is -4 kcal/mol or less"). In kcal/mol. Advanced.
end_stability_ntNohow many terminal bases the end-stability rule measures (manual §2.2: 6). In nt. Advanced.
amplified_span_maxNoF2 5' to B2 5', the amplified region. THE TWO AUTHORITIES DISAGREE: PrimerExplorer V5 says 120-160, the Eiken genome site 120-180; the default follows PrimerExplorer and this is the knob for the other reading - upper bound. Unset = the preset for this template's GC class. In bp. Advanced.
amplified_span_minNoF2 5' to B2 5', the amplified region. THE TWO AUTHORITIES DISAGREE: PrimerExplorer V5 says 120-160, the Eiken genome site 120-180; the default follows PrimerExplorer and this is the knob for the other reading - lower bound. Unset = the preset for this template's GC class. In bp. Advanced.

Output Schema

NameRequiredDescription
b3Yesthe best set's B3 outer primer
f3Yesthe best set's F3 outer primer
bipYesthe best set's BIP (B1c + B2), as ordered
fipYesthe best set's FIP (F1c + F2), as ordered
setsYesthe primer sets, best first: six regions in the literature order with every measurement that decided each one
offsetYeswhere the designed-in stretch starts in the record: add it to every position above for record coordinates. 0 unless a region was given
setCountYeshow many sets were found
constraintsYesevery window the search actually ran under, so a readout never has to restate them or guess which preset applied
targetClassYeswhich preset the search ran under - atRich, normal or gcRich, chosen from the template's own GC content (manual §4.3)
penaltyTermsYeswhat the best set's rank is MADE OF - one entry per criterion with the value measured, the window it was judged against and its cost. The costs sum to the penalty

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the write/safety profile is covered. The description adds that 'each set comes back with the arithmetic behind its rank' and that criteria follow Eiken PrimerExplorer V5, which is useful context, but it never states the design defaults, that no parameters are required, or what happens when a region is and isn't scoped.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with verb+resource and the anti-sibling clause before the return-value note; nothing is padding, though the middle sentence's methodology aside is slightly long for the value it adds.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, 100% schema coverage, and annotations supplying the safety profile, the description needn't explain return shape. It conveys the domain framing (LAMP vs pair, six regions, rank-with-arithmetic) an agent needs to select it, though it could say more about defaults and region scoping for a 24-param tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 24 parameter descriptions (GC windows, Tm windows, span constraints, region scoping, the authority disagreements) fully carry semantics. The description only gestures at 'the distances BETWEEN them' without adding format or default detail, so the baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (design LAMP primer sets), names the exact oligos produced (F3/B3/FIP/BIP plus optional loops), and explicitly distinguishes itself from pair design ('Not a pair'), so an agent can separate it from design_primer_pairs 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Not a pair: LAMP needs six binding regions' clause routes the agent away from the PCR-pair sibling and toward LAMP-specific needs, which is clear context. It stops short of naming an explicit alternative or a when-not-to-use condition, so it misses the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_merfish_probesA
Read-only
Inspect

Design MERFISH encoding probes for the subject transcript: tile it into target regions, keep those whose G+C and melting temperature fall in their windows, that share no k-mer with an rRNA or tRNA, and whose k-mers occur in this gene's transcripts and nowhere else in the transcriptome; attach readout sequences that spell the gene's codeword, add the amplification primers, screen the whole oligo again, select probes that cover every on-bit evenly with least overlap, and drop probes complementary to one another. Each stage reports how many it kept.

NameRequiredDescriptionDefault
seedNoseed for the random draws in readout assignment and selection. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_gcNohighest G+C of a target region (exclusive). In %.
max_tmNohighest melting temperature of a target region (exclusive). In °C.
min_gcNolowest G+C of a target region (exclusive). In %.
min_tmNolowest melting temperature of a target region (exclusive). In °C.
spacerNobases between each readout and the target. Advanced.A
trialsNoselection runs; the one with the most even on-bit coverage is kept. Advanced.
barcodeNothe gene's codeword, one 0 or 1 per bit, 1 where the bit is on.
rtrna_kNok-mer length of the rRNA/tRNA screen. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
probe_nmNoconcentration of each probe. In nM. Advanced.
readoutsNothe readout sequences as FASTA, one per bit, in bit order.
formamideNoformamide in the hybridization buffer. In %. Advanced.
sodium_mmNomonovalent salt of the hybridization buffer. In mM. Advanced.
t7_lengthNobases of the reverse primer lost in in vitro transcription. In nt. Only applies when reverse_primer is set. Advanced.
target_idNothe transcript to design for, by its FASTA id. Empty: the transcript whose sequence is the subject's. Advanced.
expressionNoexpression per transcript, one 'id value' line each (FPKM or TPM). Empty: every transcript weighs 1, MERFISH_probe_design's own choice without expression data. Advanced.
cross_talk_kNok-mer length of the library-wide cross-hybridization screen. Advanced.
max_rtrna_otNohighest rRNA/tRNA off-target count to keep (exclusive); 0.5 keeps only regions with none. Advanced.
specificity_kNok-mer length of the specificity and readout off-target counts. Advanced.
target_lengthNolength of each target region. In nt.
transcriptomeNoevery transcript of the organism as FASTA (RefSeq titles name the gene in their last parentheses); the subject is found in it by sequence.
forward_primerNoforward primer; its reverse complement ends the oligo. Only applies when reverse_primer is set. Advanced.
reverse_primerNoreverse primer, T7 promoter at its 5' end. Empty: no primers are added. Advanced.
min_specificityNolowest specificity to keep (exclusive): the share of a region's k-mers found only in this gene.
rtrna_referenceNorRNA and tRNA sequences as FASTA. An Ensembl ncRNA FASTA is filtered to those biotypes by its headers. Empty: the rRNA/tRNA screen does not run.
one_bit_per_probeNogive each probe copies of a single readout. Advanced.
readout_assignmentNohow each probe's on-bits are drawn: balanced keeps every on-bit equally used down the transcript. Advanced.balanced
readouts_per_probeNoreadout sequences carried by each probe, split between its two ends.
probes_per_transcriptNoprobes to select.
max_readout_ot_increaseNodrop a probe whose readouts add this many expression-weighted off-target k-mers or more (the single-molecule pipeline's check). Empty: not checked. Advanced.

Output Schema

NameRequiredDescription
probesYesthe selected encoding probes in selection order, each with its 0-based shift, target, G+C, Tm, specificity, isospecificity, readouts, barcode and the oligo to order
reportYesthe transcript-level report: probes, probes per on-bit, the fewest on any bit, and how many could be placed without overlap before and after selection
stagesYeswhat each stage took in and kept, in pipeline order, with the reason a skipped stage did not run
orderTableYesevery probe as a Name/Sequence table for pool ordering
probeCountYeshow many encoding probes were kept
explanationYesthe derivation chain: conclusion, interpretation and machinery, generated from this run

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true and destructive=false, so safety is covered. The description adds real value beyond that: it enumerates the ordered stages (tiling, GC/Tm filtering, rRNA/tRNA screens, readout attachment, primer addition, re-screen, balanced selection, complement removal) and states 'Each stage reports how many it kept', disclosing the staged/reporting nature of the run. It stops short of runtime cost or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then one dense sentence walking the stages, closing with the reporting note. Every clause maps to an actual pipeline stage, so little is wasted, but the single run-on sentence with many parallel clauses is harder to parse than a staged list would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 32-parameter tool with an output schema and full annotation coverage, the description supplies the process narrative an agent needs to call it correctly; return values and per-parameter semantics live in the schema. It does not spell out prerequisites such as the subject needing to appear in the transcriptome, though the schema fields do hint at this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes further by tying parameters to conceptual pipeline steps – the GC/Tm windows, the k-mer screens, readout assignment, primer addition, and even/least-overlap selection – giving the agent a mental model of which groups of the 32 parameters act at which stage. It does not restate individual defaults or units, which the schema already supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Design MERFISH encoding probes for the subject transcript') and follows with the exact pipeline stages, so the agent knows precisely what comes out. It never names the adjacent siblings (design_xenium_probes, design_ish_probes, design_hcr_probes), so the distinction must be inferred from the MERFISH-specific vocabulary. Clear but not sibling-differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the mention of barcode, readouts, transcriptome and primers signals this is the encoding-probe designer for a MERFISH codeword library. There is no explicit 'use this instead of X' or prerequisite statement, and no condition under which not to call it. Adequate context, no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_multisite_primersBInspect

Design QCLM (quick-change lightning multi-site) oligos: one primer per mutated site, all annealing in one reaction, with the codons drawn from an organism's usage table. A design/write.

NameRequiredDescriptionDefault
kNopotassium concentration. In mM. Advanced.
mgNomagnesium concentration — the term the Owczarzy corrections are most sensitive to. In mM. Advanced.
naNosodium concentration the salt correction is computed for. In mM. Only applies when gc_value_set is Schildkraut_1965 or Primer3 or Ahsen_2001. Advanced.
cdsYesthe CDS nucleotide sequence, in frame from the start codon.
dntpNototal dNTP concentration, which chelates magnesium and so lowers the effective Mg²⁺. In mM. Advanced.
seedNoseed for the codon draw. The same seed and the same request give the same oligos; change it to re-roll.
trisNoTris concentration. In mM. Only applies when gc_value_set is Schildkraut_1965 or Primer3 or Ahsen_2001. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
organismNocodon-usage table the synonymous choice is drawn from.e-coli
mutationsYesthe substitutions, comma- or space-separated, as [WT][pos][MUT] — e.g. "E42L, E42W, K107M". Several entries at one position are ONE site delivering several aminos.
precisionNodecimal places the reported Tm is rounded to. In dp. Advanced.
temp_weightNoscore weight on Tm deviation. Advanced.
use_primer3Noapply primer3 hairpin / homodimer / heterodimer penalties. Advanced.
gc_value_setNowhich published GC-formula parameter set the melting temperature is computed under. Values: QuickChange (QuikChange (the kit manufacturer’s own formula)), Chester_1993 (Marmur-Doty (Chester & Marshak 1993)), Schildkraut_1965 (Schildkraut & Lifson 1965 (Marmur-Doty + log[Na⁺])), Primer3 (Primer3Plus product Tm (Biopython’s default set)), Ahsen_2001 (von Ahsen 2001 (accuracy against ease of use)). Advanced.QuickChange
five_end_flankNoexplicit 5' context. Left empty, 60 bp is read off the open record either side of the CDS. Advanced.
max_gc_contentNohighest GC accepted. In %. Advanced.
min_gc_contentNolowest oligo GC accepted. In %. Advanced.
max_primer_sizeNolongest oligo. In nt. Advanced.
max_temperatureNohighest Tm threshold swept. In °C.
min_primer_sizeNoshortest oligo. In nt. Advanced.
min_temperatureNolowest Tm threshold the growth scan sweeps. In °C.
temp_range_sizeNowidth of the acceptable Tm window around the reaction temperature. In °C. Advanced.
three_end_flankNoexplicit 3' context, the partner of `five_end_flank`. Advanced.
gc_content_weightNoscore weight on GC overflow. Advanced.
max_five_end_sizeNolongest 5' lead. In nt. Advanced.
min_five_end_sizeNobases between the 5' terminus and the first mutated codon, minimum. In nt. Advanced.
max_three_end_sizeNolongest 3' tail. In nt. Advanced.
min_three_end_sizeNobases between the last mutated codon and the 3' terminus, minimum. In nt. Advanced.
primer_size_weightNoscore weight on oligo length deviation. Advanced.
temp_threshold_stepNostep between Tm thresholds tried. In °C. Advanced.
five_end_size_weightNoscore weight on 5'-lead length deviation. Advanced.
use_degeneracy_codonNocollapse a site's codons into one IUPAC-degenerate codon (upstream's default). Off, each amino gets its own oligo.
three_end_size_weightNoscore weight on 3'-tail length deviation. Advanced.
non_overlapping_primersNoforbid oligos from overlapping each other. Upstream ranks only the LAST split's solutions with this on (a reproduced bug, see the port header). Advanced.
mutation_coverage_weightNoscore weight on how many of the requested aminos the design actually delivers — upstream's dominant term. Advanced.
hairpin_temperature_weightNoscore weight on hairpin Tm. Advanced.
codon_usage_frequency_thresholdNodiscard synonymous codons rarer than this fraction in the chosen organism.
primer_dimer_temperature_weightNoscore weight on dimer Tm. Advanced.

Output Schema

NameRequiredDescription
seedYesthe seed this design was drawn with — change it to re-roll, keep it to reproduce
oligosYesone oligo per site, with its span, Tm, GC and the degenerate codons it installs
failureCountYesconstraint breaches in the winning solution (0 = every oligo inside its limits)
fullSequenceYesthe construct the oligo coordinates are on: flank + CDS + flank
mutationCoverageYesfraction of the requested amino acids the design actually delivers, 0–1
reactionTemperatureYesthe ONE annealing temperature the winning solution is built for

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's 'A design/write' only confirms what is structured. It adds real value by describing the design behavior (one oligo per site, single-reaction annealing, codon-usage-based synonymous choice), but says nothing about what the design returns being unsaved, or about failure modes when coverage cannot be satisfied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the mechanism front-loaded and no filler. The trailing fragment 'A design/write.' is terse to the point of being cryptic but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the schema documents every parameter, so the description does not need to explain returns. However, for a 39-parameter combinatorial design tool it does not warn that default constraints may fail to produce a design, nor point at the two required inputs (CDS, mutation list) that an agent must get right.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 39 parameters already carry documentation, including defaults, units, and 'Advanced' markers. The description adds no parameter-level meaning beyond echoing the organism codon table concept; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Design QCLM ... oligos') and adds the defining mechanism: one primer per mutated site, all annealing in one reaction, codons drawn from an organism's usage table. That mechanism implicitly distinguishes it from sibling primer designers like design_mutagenesis_primers and design_saturation_primers, though no sibling is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no named alternative among the many sibling design_*_primers tools. An agent must infer from 'multi-site' that this is for several mutations at once rather than a single-site mutagenesis design.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_mutagenesis_primersAInspect

Design site-directed mutagenesis (SOE-PCR/QuikChange) primers for a point change on a CDS: the ranked inner mutagenic pairs, the constant outer pair, and the single spanning primer that replaces an outer when the site sits too near a CDS end. A design/write.

NameRequiredDescriptionDefault
cdsYesthe CDS nucleotide sequence, in frame from the start codon.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
mutationYesthe change as [WT][pos][MUT], e.g. "W140F" (1-based residue).
tm_modelNoTm scale the candidates are scored and ranked on. The 55-75 °C window is calibrated for SantaLucia NN; `wallace` is upstream's primer3-free fallback, kept for golden parity. Values: santalucia (SantaLucia nearest-neighbor (Biopython Tm_NN defaults)), wallace (Wallace rule (4 °C per G·C, 2 °C per A·T)), gc:Chester_1993 (GC formula: Marmur-Doty (Chester & Marshak 1993)), gc:QuickChange (GC formula: QuikChange (the kit manufacturer’s own formula)), gc:Schildkraut_1965 (GC formula: Schildkraut & Lifson 1965 (Marmur-Doty + log[Na⁺])), gc:Wetmur_Melting_1991 (GC formula: Wetmur 1991, DNA (MELTING 4.3 approximate mode)), gc:Wetmur_RNA_1991 (GC formula: Wetmur 1991, RNA), gc:Wetmur_DNA_RNA_1991 (GC formula: Wetmur 1991, RNA/DNA hybrid), gc:Primer3 (GC formula: Primer3Plus product Tm (Biopython’s default set)), gc:Ahsen_2001 (GC formula: von Ahsen 2001 (accuracy against ease of use)).santalucia
codon_usage_tsvNocodon-usage table the mutant codon is drawn from, as a Kazusa-style TSV. Left empty it is the built-in E. coli K12 table, which is what the panel's codon picker opens on. Advanced.

Output Schema

NameRequiredDescription
outerYesthe constant outer primer pair (BsaI-tailed), each with its annealing Tm and GC
wtCodonYesthe wild-type codon replaced
edgeCaseYesset only when the site sits too close to a CDS end for an inner pair: the single spanning primer to use and which outer it replaces. Null otherwise
mutCodonYesthe mutant codon installed
ntChangesYesnumber of nucleotides changed
candidatesYesthe candidate inner primer pairs (with Tm)
ntPositionYes1-based nt position of the changed codon's first base, counting from the start of the CDS (the engine returns `ntStart + 1`). This said 0-based until 2026-09-02 and it never was — a coordinate convention stated wrongly is worse than one left unstated, because a downstream node acts on it

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false (write), destructiveHint=false, and openWorldHint=false, so the description's 'A design/write' largely restates the structured data. It adds some context by naming the algorithm family (SOE-PCR/QuikChange) and deliverables, but says nothing about side effects, persistence, permissions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and resource; the dense first sentence carries the specification and the trailing 'A design/write.' is brief. The closing fragment is slightly terse and the first sentence is compound, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering the safety profile, an output schema covering return values, and 100% schema description coverage for six parameters, the description only needs to convey purpose and deliverables, which it does. The remaining gap is that it does not help an agent choose among the many design_* siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (cds, mutation, tm_model, codon_usage_tsv, _subject, _files) is already documented in the schema. The description adds no syntax or format detail beyond the schema, so the baseline of 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Design) and resource (site-directed mutagenesis primers), scoped to 'a point change on a CDS' with method names SOE-PCR/QuikChange, and enumerates the deliverables (ranked inner mutagenic pairs, constant outer pair, spanning primer). It is clear, but it never names or explicitly rules out the many sibling design_* tools, so routing among them rests on inference from the scope phrase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a point change on a CDS' implies the use case, and 'when the site sits too near a CDS end' notes a conditional behavior. However, there is no explicit when-to-use/when-not statement nor any pointer to alternatives such as design_saturation_primers or design_multisite_primers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_oligo_plate_orderB
Read-only
Inspect

Lay a set of oligos out as a supplier's PLATE order sheet: one worksheet per plate, in the well order the supplier's own order form fills, with the column shape its loading direction requires. A plate order is addressed BY WELL, which a flat tube list cannot express — so this is the shape an oligo set actually gets ordered in once it outgrows a handful of tubes. With mixed, a forward and a reverse share one well, which is what the supplier's doubled mix-plate layouts encode. It WRITES A FILE and sends nothing: no account, no key, no network call.

NameRequiredDescriptionDefault
fillNohow the plate is loaded. It decides the FILE'S COLUMNS, not just the order: a plate filled by row or by column carries no well column at all, because the supplier derives each position from the row order. Values: rows (Rows (A1, A2, A3 …)), columns (Columns (A1, B1, C1 …)), explicit (Explicitly entered).rows
mixedNoone well per PRIMER PAIR: `oligos` is read as forward, reverse, forward, reverse, and each plate is written as every well once carrying the forwards and again carrying the reverses.
namesYesa name per oligo, in the same order. A plate well is ORDERED BY NAME, so an unnamed oligo is refused rather than numbered: the label is what the supplier ships the tube under.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNowells per plate. Values: 96 (96 well), 384 (384 well).
oligosYesthe oligos to lay out, 5'→3'. Wire them from a design run, or list them. With `mixed`, these are read in FORWARD, REVERSE order — two entries per well.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
plate_nameNothe plate's name, which becomes the worksheet's name. Several plates get ' (2)', ' (3)' appended.Plate 1
pad_to_capacityNowrite every unused well as the supplier's blank-name, blank-sequence row rather than ending the sheet short. Advanced.

Output Schema

NameRequiredDescription
tsvYesthe FIRST plate as tab-delimited text, in the column shape the loading direction requires — the shape the supplier's own paste box accepts verbatim. Several plates means several sheets: read `sheets` for the rest
sheetsYesone entry per PLATE: its name, its grid, how many wells it fills against the plate's capacity, and every laid-out well
columnsYesthe header row this order was written with, which is the two-vs-three column rule the loading direction decided
readingYeswhat the order is, generated from the laid-out plates rather than from the request
refusedYesevery oligo left OUT, with the reason. Never empty-because-nothing-was-checked: an order that is quietly short is one the user pays a supplier for
wellNoteYeswhy the well labels are written unpadded, which is a collision in the supplier's own form rather than our choice
plateCountYeshow many plates the set needed. Branch a workflow on this rather than re-deriving it

TDQS

B3.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states 'It WRITES A FILE', which directly contradicts readOnlyHint=true (a read-only tool does not modify its environment). This is an annotation contradiction. Other details such as no network, no account, and no key align with openWorldHint=false and destructiveHint=false, but they do not resolve the core inconsistency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then rationale, then key parameter behavior, then the file-writing caveat. Four sentences are somewhat dense but each carries purpose, context, or behavior; there is no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 9-parameter design tool with nested objects and an output schema, the description covers purpose, ordering context, key parameter behavior, and the output side effect. It leaves minor parameters to schema descriptions, which is acceptable given full schema coverage and output schema presence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds semantic depth beyond the schema: it explains that `mixed` makes a forward and reverse share one well and that `fill` determines the file's columns and loading direction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lay out) and resource (oligos as a supplier's PLATE order sheet), including the output structure of one worksheet per plate and well-order loading. It distinguishes from a flat tube list, but does not name a competing sibling tool, so it is clear without full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: use when an oligo set outgrows a handful of tubes and must be ordered by well, which a flat tube list cannot express. It lacks explicit exclusions or named alternative tools, but the when-to-use scenario is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_overhang_setA
Read-only
Inspect

Design a high-fidelity Golden Gate overhang set of a given size against measured ligation data, optionally pinning junctions you cannot change (a fixed vector's own overhangs). The counterpart to score_overhang_fidelity: that grades a set you already have, this proposes one. The search is greedy-plus-steepest-ascent over the same golden-validated objective: real measured data, a heuristic path, no claim of finding the optimum.

NameRequiredDescriptionDefault
sizeNohow many junctions the assembly needs (parts + 1 for a circular construct, counted as junctions).
fixedNojunctions you cannot change, such as a destination vector's own overhangs. They are never considered for replacement and are counted inside `size`.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNothe Type-IIS enzyme the reaction uses, which picks that enzyme's own measured matrix when one exists. Only applies when dataset is not given.
datasetNodesign against this measured matrix instead of the one the enzyme implies. Values: BsaI-HFv2 (BsaI-HFv2, Golden Gate cycling (4 nt)), BsmBI-v2 (BsmBI-v2, Golden Gate cycling (4 nt)), Esp3I (Esp3I, Golden Gate cycling (4 nt)), BbsI-HF (BbsI-HF, Golden Gate cycling (4 nt)), SapI (SapI, Golden Gate cycling (3 nt)), T4-01h-25C (T4 DNA ligase, 1 h at 25 C (4 nt)), T4-01h-37C (T4 DNA ligase, 1 h at 37 C (4 nt)), T4-18h-25C (T4 DNA ligase, 18 h at 25 C (4 nt)), T4-18h-37C (T4 DNA ligase, 18 h at 37 C (4 nt)).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
start_fromNothe set you already have, as a second starting point. Given one of the same size, the answer is never WORSE than it: the greedy build alone can land in its own basin and lose points against a real set. Wire `golden_gate_assemble.overhangs` here.
candidate_poolNohow many of the strongest-annealing overhangs the search considers. Higher is a better set and a slower run. Advanced.

Output Schema

NameRequiredDescription
fromYeswhich starting point won: `greedy` for the built set, `yours` for `start_from` improved in place
fixedYesthe junctions that were pinned and never replaced
datasetYesthe measured matrix designed against
percentYesthe same number as a percentage
fidelityYesthe designed set's fidelity, 0-1, on the same measured matrix
overhangsYesthe designed set, pinned junctions first. Wire it into score_overhang_fidelity to see the full per-junction breakdown

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful non-obvious context: the search is 'greedy-plus-steepest-ascent', 'a heuristic path', with 'no claim of finding the optimum' — an agent needs to know the result is not guaranteed optimal before presenting it. It doesn't restate runtime or determinism, but the schema's candidate_pool note covers the speed tradeoff.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and scope, then the sibling distinction, then the algorithmic caveat. Each sentence earns its place. The final sentence is dense but carries the most important behavioral disclosure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and it correctly focuses on purpose, alternative routing, and search quality. For an 8-parameter tool with nested objects it is adequate, though it could say more about what happens when `size` conflicts with `fixed` or `start_from` length.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter descriptions are unusually rich (fixed junctions counted inside size, start_from never being worse, candidate_pool as an advanced speed/quality knob). The description only paraphrases the intent of `fixed` and adds no syntax, format, or edge-case detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Design a high-fidelity Golden Gate overhang set of a given size against measured ligation data') plus the optional pinning behavior. It then explicitly names the sibling it is not ('The counterpart to score_overhang_fidelity: that grades a set you already have, this proposes one'), so an agent can route between the two 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear decision rule against the closest sibling: grade an existing set with score_overhang_fidelity, generate a new one here. It also hints at the golden_gate_assemble hand-off via start_from. It stops short of stating exclusions for other assembly/design siblings, so it is strong context rather than a full when/when-not map.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_padlock_probesA
Read-only
Inspect

Design padlock probes for in-situ sequencing against the subject: find the two-arm targets whose melting temperature falls in a window, check each against a BLAST search for any other transcript that could be ligated across the junction, pack non-overlapping targets from the 3' end, and assemble each into its padlock with the backbone given. Without BLAST results it returns the targets to search, and says the junction check has not been run.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_tmNohighest target melting temperature to accept (exclusive). In °C.
min_tmNolowest target melting temperature to accept (exclusive), at 0.1 µM probe, 75 mM monovalent, 10 mM divalent salt and 20% formamide. In °C.
barcodeNothe barcode read out by sequencing. Advanced.XXXX
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
intervalNofewest bases between two packed targets. In nt.
variantsNocomma-separated accessions (no version) that count as the target itself, such as its isoforms. Empty: a hit counts as the target only when its accession is in the subject's name. Only applies when blast_csv is set. Advanced.
blast_csvNoblastn -outfmt 10 output for the targets FASTA this tool returns (run with -word_size 7 -strand plus against your transcriptome). Without it no target is checked for junction specificity.
arm_lengthNolength of each target arm; the target is twice this. In nt.
linker_upstreamNobackbone sequence between the 3' arm and the barcode. Advanced.LINKERFIRST
linker_downstreamNobackbone sequence between the barcode and the 5' arm. Advanced.LINKERSECOND

Output Schema

NameRequiredDescription
packedYesevery packed target before the database-mappability filter. Null until `blast_csv` is given
padlocksYesthe final padlock probes (target found in the database), each with its start, target, full sequence and Tm. Null until `blast_csv` is given: the junction check has not been run
explanationYesthe derivation chain: conclusion, interpretation and machinery, generated from this run
padlockCountYeshow many padlock probes survived. Null until `blast_csv` is given, because a 0 would read as none surviving a check that has not been run
targetsFastaYesthe melting-temperature-passing targets as FASTA, named target_N, for blastn

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, non-destructive, closed-world computation. The description adds real behavioral context beyond that: the two-phase nature of the tool and the degraded-output contract when BLAST results are absent (returns targets and flags the junction check as not run). This is useful disclosure of output behavior that annotations do not cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb+resource, then two dense workflow sentences. Every clause describes a distinct step or fallback behavior, so it earns its length, though the second sentence is somewhat packed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 11-parameter tool, the description covers the pipeline, the BLAST prerequisite, and the fallback behavior, and an output schema exists so return values need not be explained. Sufficient for correct invocation, with only minor gaps around alternative tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented in the schema, and the description adds only workflow-level framing for the Tm window, BLAST input, packing interval and backbone rather than new syntax or format detail. Baseline 3 is appropriate when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (design) and resource (padlock probes) for in-situ sequencing, then enumerates the actual steps: Tm-windowed two-arm target finding, BLAST junction specificity check, 3'-end packing of non-overlapping targets, and padlock assembly. This clearly differentiates it from sibling probe designers like design_ish_probes or design_hcr_probes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly conveys the operational context: it explains what happens with and without blast_csv, telling the agent the prerequisite for a full run versus the partial run that only returns targets. It does not, however, explicitly name alternative sibling tools or state when to choose this over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_primer_pairsAInspect

The Primer Designer's own ranked search: scan the open record for primer pairs inside a product-size, Tm, length and GC window, score every candidate on Tm, dimers, hairpins, 3' stability, repeats, clamp and specificity under weights you set, and return the best N. With task: existing, supply one primer and it designs the mate. Emits the top pair so a downstream pcr_amplify runs on it. For a sequencing walk use design_sequencing_primers; for pydna's single-pair designer use design_primers.

NameRequiredDescriptionDefault
taskNo`new` ranks candidate pairs; `existing` keeps the primer you supply and designs its mate.new
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
gc_maxNohighest primer GC accepted. In %.
gc_minNolowest primer GC accepted. In %.
n_pairsNohow many ranked pairs to return.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
excludedNospans no primer may sit on, as find_primer_snps' `excluded` emits them: a list of {start, end}, 0-based and end-exclusive, where start = end is an insertion between two bases. The amplicon may run across them. The panel's Avoid known SNPs. Advanced.
fwd_tailNo5' non-annealing tail added to every forward primer (a restriction site or adapter). The footprint, and so binding and Tm, is unchanged. Advanced.
rev_tailNo5' non-annealing tail added to every reverse primer. Advanced.
target_tmNothe Tm each primer is scored toward. In °C.
weight_gcNoscoring weight for the `gc` penalty (0 switches it off). Advanced.
weight_tmNoscoring weight for the `tm` penalty (0 switches it off). Advanced.
conditionsNosalt, magnesium, dNTP and oligo concentrations plus the salt-correction method the Tm window is measured in. Left unset it is filled from your reaction-conditions settings, as the panel's are. Advanced.
region_endNo0-based inclusive end of the region to design within. Advanced.
target_endNo0-based inclusive end of the target. Advanced.
weight_end3Noscoring weight for the `end3` penalty (0 switches it off). Advanced.
region_startNo0-based inclusive start of the region to design within. Unset = the whole template. Advanced.
target_startNo0-based inclusive start of a target the amplicon must flank, with no primer on it. Advanced.
tm_window_maxNohighest primer Tm accepted at all. In °C.
tm_window_minNolowest primer Tm accepted at all. In °C.
weight_lengthNoscoring weight for the `length` penalty (0 switches it off). Advanced.
weight_poly_xNoscoring weight for the `polyX` penalty (0 switches it off). Advanced.
weight_hairpinNoscoring weight for the `hairpin` penalty (0 switches it off). Advanced.
weight_tm_pairNoscoring weight for the `tmPair` penalty (0 switches it off). Advanced.
weight_gc_clampNoscoring weight for the `gcClamp` penalty (0 switches it off). Advanced.
weight_self_endNoscoring weight for the `selfEnd` penalty (0 switches it off). Advanced.
existing_forwardNowith `task: existing`, the forward primer to keep. Only applies when task is existing.
existing_reverseNowith `task: existing`, the reverse primer to keep. Only applies when task is existing.
product_size_maxNolongest acceptable amplicon. In bp.
product_size_minNoshortest acceptable amplicon. In bp.
weight_cross_endNoscoring weight for the `crossEnd` penalty (0 switches it off). Advanced.
weight_di_repeatNoscoring weight for the `diRepeat` penalty (0 switches it off). Advanced.
primer_length_maxNolongest primer. In nt.
primer_length_minNoshortest primer. In nt.
weight_misprimingNoscoring weight for the `mispriming` penalty (0 switches it off). Advanced.
weight_self_dimerNoscoring weight for the `selfDimer` penalty (0 switches it off). Advanced.
mispriming_libraryNoa Primer3 repeat library to screen every primer against. `none` skips the screen. Advanced.none
weight_cross_dimerNoscoring weight for the `crossDimer` penalty (0 switches it off). Advanced.
weight_specificityNoscoring weight for the `specificity` penalty (0 switches it off). Advanced.

Output Schema

NameRequiredDescription
taYesthe top pair's annealing temperature [°C]
pairsYesevery returned pair in rank order: score, both primers (sequence, span, Tm, GC), product length, Tm and Ta
forwardYesthe top pair's forward primer (wire into pcr_amplify)
reverseYesthe top pair's reverse primer
pairCountYeshow many pairs came back
shortfallYeswhy fewer pairs came back than were asked for; empty when the run was not short
productLenYesthe top pair's amplicon length [bp]

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-destructive, closed-world tool; the description stays consistent and adds real context — candidates are ranked under user-set weights, and the top pair is emitted for a downstream pcr_amplify run. It does not say whether anything is persisted or what happens when no candidate passes the windows, which keeps it below 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and search window, then mode behavior, then output chaining, then sibling routing — a sensible ordering with no filler. It is dense at five sentences but each carries distinct information; a small trim would make it tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 39-parameter designer with an output schema, the description covers scope, modes, weighting philosophy and sibling alternatives. It leaves the record/project plumbing (_subject, _files, region vs target concepts) to the schema, which is reasonable given full schema description coverage, but a hint about region/target scoping would close the last gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds conceptual grouping beyond the schema by summarizing the windows (product size, Tm, length, GC) and the scored penalties (Tm, dimers, hairpins, 3' stability, repeats, clamp, specificity) as 'weights you set'. That framing helps an agent decide which of the 39 parameters matter, though it doesn't map individual weights.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('scan the open record for primer pairs... return the best N') and enumerates the scoring dimensions, so an agent knows exactly what the tool produces. It also names two siblings as different by role, distinguishing itself without requiring either schema to be opened.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: 'For a sequencing walk use design_sequencing_primers; for pydna's single-pair designer use design_primers,' plus the internal mode switch ('With `task: existing`, supply one primer and it designs the mate'). Both the alternative-selection and mode-selection decisions are stated, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_primersAInspect

Design a forward + reverse primer pair to amplify the subject (pydna primer_design), with Tm, Ta and suggested Taq/Phusion cycling programs. Emits both primers so a downstream pcr_amplify runs on them — the design→PCR→gel loop.

NameRequiredDescriptionDefault
limitNominimum primer length (pydna `limit`). In bp. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
target_tmNotarget melting temperature (pydna default 55). In °C.
conditionsNosalt, magnesium, dNTP and oligo concentrations plus the salt-correction method and any additives the target Tm is measured in. Left unset it is filled from your reaction-conditions settings, and falls back to the nearest-neighbour defaults when there are none. Advanced.
forward_primerNosupply one primer to design only its mate. Advanced.
reverse_primerNosupply one primer to design only its mate. Advanced.

Output Schema

NameRequiredDescription
taYessuggested annealing temperature [°C]
forwardYesforward primer 5'→3' (wire into pcr_amplify)
programYessuggested Taq cycling program
reverseYesreverse primer 5'→3' (wire into pcr_amplify)
forwardTmYesforward primer Tm [°C]
productTmYesamplicon melting temperature [°C] (Rychlik 1990, at the run's own monovalent salt) — 70% of `ta` on the Taq path
reverseTmYesreverse primer Tm [°C]
productLenYesamplicon length [bp]

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false. The description usefully adds the pipeline intent (emits both primers for pcr_amplify) but does not explain any side effects of a non-readonly design call, or how the paired forward_primer/reverse_primer-only mode behaves. With annotations carrying the safety profile, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences, front-loaded with the core action and output, then the downstream rationale. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and the description covers purpose and downstream flow. For a design tool with nested conditions parameters, it is complete enough, missing only the distinctions against sibling primer-design tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters, including the nested conditions and the optional single-primer mode. The description adds no parameter-level meaning beyond that, which is the baseline expectation here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb and resource: design a forward + reverse primer pair to amplify the subject, citing pydna `primer_design` and the accompanying Tm/Ta and cycling-program output. It does not explicitly distinguish itself from close siblings like design_primer_pairs or design_qpcr_assay, so it falls short of the top mark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Frames the context well: use this to produce amplifiable primers and then feed them into a downstream pcr_amplify, forming the design→PCR→gel loop. No exclusion criteria against the very similar primer-design siblings are given, which keeps it at a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_qpcr_assayAInspect

Design qPCR assays over the subject — primer pair plus hydrolysis probe, ranked by penalty, with amplicon size/GC, per-oligo Tm and whether both primers bind a single site.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
conditionsNosalt, magnesium, dNTP and oligo concentrations plus the salt-correction method and any DMSO or formamide that every Tm in this design is measured in. Left unset it is filled from your reaction-conditions settings, and falls back to the nearest-neighbour defaults when there are none. Advanced.
max_poly_xNolongest run of one base allowed in any oligo (primer3's POLY_X). A long run mispairs by slipping, and for a TaqMan probe a run of four or more Gs quenches the reporter. In nt. Advanced.
region_endNo0-based inclusive end. Unset = the whole sequence. Advanced.
max_resultsNohow many assays to return, best penalty first.
amplicon_maxNolongest acceptable amplicon - qPCR amplicons are short on purpose, because a short product amplifies efficiently enough for the exponential phase to be clean. In bp.
amplicon_minNoshortest acceptable amplicon. In bp.
probe_max_gcNohighest acceptable probe GC content. In %. Advanced.
probe_max_tmNoprobes above this Tm are rejected outright. In °C. Advanced.
probe_min_gcNolowest acceptable probe GC content. In %. Advanced.
probe_min_tmNoprobes below this Tm are rejected outright. In °C. Advanced.
probe_tm_optNotarget probe Tm - conventionally ~10 °C above the primers, so the probe is bound before extension reaches it. In °C.
region_startNo0-based inclusive start of the region to design in. Unset = the whole sequence; pass the selection's start to scope to it. Advanced.
primer_max_gcNohighest acceptable primer GC content. In %. Advanced.
primer_max_tmNoprimers above this Tm are rejected outright. In °C. Advanced.
primer_min_gcNolowest acceptable primer GC content. In %. Advanced.
primer_min_tmNoprimers below this Tm are rejected outright, not merely penalised. In °C. Advanced.
primer_tm_optNotarget primer Tm; the penalty ranks candidates by their distance from it. In °C.
probe_chemistryNowhat the hydrolysis probe is made of. `dna` is unmodified DNA; `lna` locks the bases named by `probe_locked_positions`, which raises the probe Tm and is how a short probe reaches the TaqMan offset over its primers. MGB and Scorpion chemistries are not offered: neither has a published nearest-neighbour parameter set to compute a Tm from.dna
structure_checkNorun the `thal` secondary-structure check on the RETURNED assays: hairpin and cross-dimer melting temperatures for all three oligos and every pairing between them. On by default, because a qPCR assay that dimerises is the commonest design failure and penalty ranking alone will happily put one first. Off returns null structures and is measurably faster - the check is a dynamic-programming alignment per oligo pair. Advanced.
probe_max_lengthNolongest probe considered. In nt. Advanced.
probe_min_lengthNoshortest probe considered. In nt. Advanced.
probe_opt_lengthNoprobe length the penalty prefers. In nt. Advanced.
primer_max_lengthNolongest primer considered; primer3's own ceiling is 36. In nt. Advanced.
primer_min_lengthNoshortest primer considered. In nt. Advanced.
primer_opt_lengthNoprimer length the penalty prefers. In nt. Advanced.
probe_tm_offset_minNohow many °C the probe Tm must exceed the MEAN primer Tm. TaqMan guidance is 8-10; below that the probe can melt off before it is cleaved. In °C.
probe_locked_positionsNowhich bases to lock, 1-based from the probe's 5′ end, e.g. `3, 6, 9`. Read only when `probe_chemistry` is `lna`. Positions must be interior to the SHORTEST probe the search will try and never adjacent, because McTigue et al. (2004) measured one locked base per nearest neighbour and none at a duplex end - a position that breaks either rule is refused by name rather than silently dropped. Only applies when probe_chemistry is lna.

Output Schema

NameRequiredDescription
bestYesthe best-penalty assay
countYeshow many assays were found
probeYesthe best assay's probe
assaysYesthe ranked assays
offsetYeswhere the designed-in stretch starts in the record: add it to every position above for record coordinates. 0 unless a region was given
forwardYesthe best assay's forward primer
reverseYesthe best assay's reverse primer
conditionsYesthe buffer every Tm in this design was measured in - salt, magnesium, dNTPs, oligo concentration, the salt-correction method and any additives - or a note saying none were supplied
probe_orderedYesthe best assay's probe as it must be ORDERED: plain DNA, or the locked-base notation (`GTCGLAAC`) when the probe was designed as LNA

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, and the description does not contradict them. The description adds that results are ranked by penalty and include amplicon size/GC, per-oligo Tm, and single-site binding, but it does not discuss computational cost, side effects, or validation behavior beyond what the schema already covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler. The purpose, key assay components, ranking basis, and returned attributes are packed efficiently into one readable line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 29 parameters, a rich input schema, and an output schema, the description is adequate on purpose and return attributes. However, it lacks explicit routing against the many sibling design tools and does not mention caveats about advanced conditions, structure checking, or defaults, leaving the agent to rely entirely on the schema for those details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the parameter semantics. The description mentions penalty ranking and assay output attributes but does not add parameter-specific meaning beyond the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: design qPCR assays. It explicitly says the output is a primer pair plus hydrolysis probe, which separates it from generic primer-pair tools such as design_primers and design_primer_pairs. It also names ranking and key assay attributes, so the agent can tell what the tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use for qPCR/TaqMan-style assay design is implied by 'qPCR assays' and 'hydrolysis probe', but the description does not explicitly say when to choose this over design_primers, design_primer_pairs, design_hcr_probes, design_ish_probes, or primer_check. There are no stated exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_rbsAInspect

Design a 5'UTR (Shine-Dalgarno + spacer) in front of a CDS to hit a target translation-initiation strength (SC-08 engine, Turner-2004 folding).

NameRequiredDescriptionDefault
cdsNothe CDS starting at its start codon; unset = the open record's sequence.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
upstreamNoupstream context 5' of the UTR (engine default when unset). Advanced.
target_strengthYestarget relative strength, on the model's own scale — 1 is as strong as its reference site, and real sites do score above it.

Output Schema

NameRequiredDescription
sdYesthe Shine-Dalgarno core
utrYesthe designed 5'UTR
fullYesUTR + CDS
dgTotalYesthe predicted total free energy of translation initiation (ΔG_total, kcal/mol) for the designed site; null when the model could not fold it
spacingYesSD→start spacing
onTargetYeswhether the target strength was reachable
relStrengthYesachieved relative strength
achievableMaxYesthe strongest relative strength any candidate site reached in this search, which bounds what a target above it can get
achievableMinYesthe weakest relative strength any candidate site reached in this search, which bounds what a target below it can get

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is partly covered. The description adds useful algorithmic context (SC-08 engine, Turner-2004 folding) and says what is being designed, but does not clarify whether it writes a record, only emits a sequence, or what side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single, front-loaded sentence with no wasted words. The parenthetical engine details are compact and directly relevant to the task.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, annotations, and an output schema, the description covers the core purpose and modeling context well enough to call the tool. The main remaining gap is routing guidance versus score_rbs and other design tools, but that is more a usage-guideline issue than a missing core fact.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every parameter has a schema description. The tool description adds only high-level framing for CDS and target_strength and does not explain upstream, _files, or _subject beyond what the schema already provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Design') and resource ('5'UTR (Shine-Dalgarno + spacer) in front of a CDS'), plus the target outcome ('target translation-initiation strength'). It is clearly distinct from a scoring tool like score_rbs, but it does not explicitly name sibling tools or state the boundary against them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Design ... to hit a target translation-initiation strength' — an agent can infer this is for constructing an RBS rather than evaluating one. However, there is no explicit when-to-use guidance, no comparison to score_rbs, and no stated prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_saturation_primersAInspect

Design site-saturation mutagenesis (SSM) primers: one overlapping forward/reverse pair per site, each carrying a degenerate codon, sharing ONE reaction-level overlap and 3' temperature so every site amplifies in the same tube (both of Mutation Maker's solvers: fast approximation by default, exhaustive search on request). Every Tm is Biopython's Tm_NN over the Allawi & SantaLucia 1997 nearest-neighbour table (DNA_NN3, upstream's own), under the salt correction and buffer below. A design/write.

NameRequiredDescriptionDefault
kNopotassium concentration. In mM. Advanced.
mgNomagnesium concentration — the term the Owczarzy corrections are most sensitive to. In mM. Advanced.
naNosodium concentration the salt correction is computed for. In mM. Advanced.
cdsYesthe CDS nucleotide sequence, in frame from the start codon (length must be a multiple of 3).
dntpNototal dNTP concentration, which chelates magnesium and so lowers the effective Mg²⁺. In mM. Advanced.
trisNoTris concentration. In mM. Advanced.
dnac1Nothe higher-concentration strand (the primer, in a large excess). In nM. Advanced.
dnac2Nothe lower-concentration strand (the template). In nM. Advanced.
sitesYesthe saturation sites, comma- or space-separated, as [WT][pos]X — e.g. "V2X, K107X". 1-based residue positions.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
solverNowhich of Mutation Maker's two solvers designs the pairs. `fast` grows one candidate per site per temperature combination (upstream's own default, milliseconds). `exhaustive` enumerates every primer of every allowed length at every allowed start and scores every geometrically valid pair — hundreds of thousands per site, seconds rather than milliseconds, and it reports what it searched. Values: fast (Fast approximation), exhaustive (Exhaustive search).fast
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
precisionNodecimal places the reported Tm is rounded to. In dp. Advanced.
oligo_prefixNoprefix for the designed oligo names. Advanced.ssm
five_end_flankNoexplicit 5' flanking sequence — only for a free-standing gene with no plasmid open, and then the 3' flank is required too. Advanced.
forward_primerNo5' flanking primer, 5'→3'. Left empty, it is read off the open plasmid 56 bp either side of the CDS (22 nt, and only when it occurs there exactly once).
max_gc_contentNohighest GC accepted. In %. Advanced.
min_gc_contentNolowest primer GC accepted before a primer is flagged out of range. In %. Advanced.
reverse_primerNo3' flanking primer, 5'→3' on its own strand. Left empty, it is read off the open plasmid 56 bp either side of the CDS (22 nt, and only when it occurs there exactly once).
max_primer_sizeNolongest whole primer. In nt. Advanced.
min_primer_sizeNoshortest whole primer. In nt. Advanced.
salt_correctionNosalt-correction method, in Biopython's `saltcorr` order. Values: No (None), Schildkraut_1965 (Schildkraut & Lifson 1965 (16.6 · log[Na⁺])), Wetmur_1991 (Wetmur 1991 (16.6 · log[Na⁺/(1 + 0.7 · Na⁺)])), SantaLucia_1996 (SantaLucia 1996 (12.5 · log[Na⁺])), SantaLucia_1998 (SantaLucia 1998 (11.7 · log[Na⁺])), SantaLucia_DeltaS_1998 (SantaLucia 1998, entropy (corrects ΔS, not Tm)), Owczarzy_2004 (Owczarzy 2004 (GC-dependent, corrects 1/Tm)), Owczarzy_2008 (Owczarzy 2008 (Mg²⁺ decision tree, dNTP-corrected)). Advanced.Owczarzy_2004
three_end_flankNoexplicit 3' flanking sequence, the partner of `five_end_flank`. Advanced.
degenerate_codonNothe degenerate codon installed at every site (NNK is the common 32-codon choice).NNK
max_overlap_sizeNolongest overlap. Upstream's scan stops two short of this (a reproduced quirk, see the port header). In nt. Advanced.
min_overlap_sizeNoshortest shared overlap. In nt. Advanced.
gc_content_weightNoscore weight on GC overflow. Upstream's default is 0, and its GC term counts G twice and never counts C (a reproduced bug, see the port header) — raising this weight makes that quirk observable. Advanced.
max_five_end_sizeNolongest 5' arm before the mutated codon. In nt. Only applies when solver is exhaustive. Advanced.
min_five_end_sizeNoshortest 5' arm before the mutated codon. In nt. Advanced.
max_three_end_sizeNolongest 3' arm beyond the mutated codon. Bounds the search area and discards candidates whose 3' arm overruns it. In nt. Only applies when solver is exhaustive. Advanced.
min_three_end_sizeNoshortest 3' arm beyond the mutated codon. In nt. Advanced.
overlap_temp_rangeNowidth of the overlap Tm window. In °C. Advanced.
overlap_temp_weightNoscore weight on overlap Tm deviation. Advanced.
three_end_temp_rangeNowidth of the 3'-end Tm window scanned around each candidate temperature. In °C. Advanced.
three_end_size_weightNoscore weight on 3'-end length deviation. Advanced.
three_end_temp_weightNoscore weight on 3'-end Tm deviation. Advanced.
max_overlap_temperatureNohighest overlap Tm allowed. In °C.
min_overlap_temperatureNolowest overlap Tm the reaction may settle on. In °C.
overlap_temp_range_stepNostep between overlap temperatures tried. In °C. Advanced.
exclude_flanking_primersNotake the 3' Tm window from the explicit min/max above instead of from the flanking pair's own Tm. Advanced.
compute_hairpin_homodimerNoadd the hairpin/homodimer/heterodimer penalty to the score (roughly doubles the run; off upstream). Advanced.
max_three_end_temperatureNohighest 3'-end Tm allowed. In °C.
min_three_end_temperatureNolowest 3'-end Tm (used when `exclude_flanking_primers` is on; otherwise the window comes from the flanking pair). In °C. Only applies when exclude_flanking_primers is true.
three_end_temp_range_stepNostep between 3'-end temperatures tried. In °C. Advanced.
hairpin_temperature_weightNoscore weight on hairpin Tm. Only applies when compute_hairpin_homodimer is true. Advanced.
primer_dimer_temperature_weightNoscore weight on homo/heterodimer Tm. Only applies when compute_hairpin_homodimer is true. Advanced.
separate_forward_reverse_temperaturesNooptimise the forward and reverse 3' temperatures independently. Advanced.

Output Schema

NameRequiredDescription
pairsYesone designed forward/reverse pair per site, with its overlap, temperatures, GC and in-range flags
searchYeswhat the solver actually searched: candidates enumerated and kept, pairs scored, temperature combinations tried. Null for the fast solver, which enumerates nothing
siteCountYessites requested
foundCountYessites the solver found a pair for (< siteCount means the parameters were too tight for some)
fullSequenceYesthe construct the design spans, flanking primer to flanking primer
forwardTemperatureYesreaction-level forward 3'-end Tm
overlapTemperatureYesthe ONE overlap Tm the whole reaction settled on
reverseTemperatureYesreaction-level reverse 3'-end Tm

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false and destructiveHint=false, and the description adds meaningful behavior: one pair per site, shared reaction-level overlap and 3' temperature, fast-by-default vs exhaustive-on-request solver behavior, Tm calculation method, and the fact that this is a design/write operation. It does not discuss permissions or detailed side effects, but the output schema covers return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and dense, with purpose in the first sentence and method/solver context following. It is mostly efficient, though the long parenthetical first sentence and the trailing fragment “A design/write” reduce polish slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 47-parameter design tool with full schema coverage and an output schema, the description supplies the essential purpose, core method, solver modes, Tm model, and write behavior. The main missing element is explicit routing among the many primer-design siblings, which is reflected in the lower usage-guidelines score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds method context that ties the buffer/salt parameters to Biopython Tm_NN over DNA_NN3 and explains that the fast solver is default while exhaustive is requested. Most individual parameter semantics still come from the schema, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: designing site-saturation mutagenesis (SSM) primers as one forward/reverse pair per site carrying a degenerate codon. The SSM framing and per-site pair design distinguish it from generic primer-design siblings, even though it does not name those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description identifies SSM as the use case but gives no explicit when-to-use/when-not-to-use guidance and does not name alternatives such as design_mutagenesis_primers, design_multisite_primers, or design_degenerate_primers. Solver guidance for fast vs exhaustive is parameter-level, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_sequencing_primersAInspect

Design a WALK of sequencing primers that reads a whole region, not one pair: tiled reads with confirmed overlap, on both strands by default, plus the coverage the walk actually achieves and any stretch it cannot reach. This is the 'how do I read all 6 kb of this construct' question, which a single pair does not answer. Read length and dead zone default to a named facility's published figures (MSU RTSF, ABI 3730XL) rather than to round numbers.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
overlapNoconfirmed overlap required between consecutive reads on one strand. Overlap is what turns abutting reads into a contig. Default 100 has NO published source and is a judgement, which is why it is stated rather than dressed as a figure. In bp.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
dead_zoneNobases at the start of a read that are not trustworthy. Default 35 is the LONGEST the same source warns about (it says the first 25-35 bases are poor), so an untouched walk is the cautious reading in both directions. In bp. Advanced.
target_tmNotarget melting temperature for each primer in the walk. In °C. Advanced.
min_lengthNoshortest acceptable primer. In bp. Advanced.
region_endNo0-based inclusive end of the region to read. Unset = the whole template. Advanced.
read_lengthNousable bases per read, AFTER the dead zone. Default 800 is the shortest read MSU RTSF Genomics Core, Sanger Sequencing Best and Worst Practices (2024-04-25), ABI 3730XL promises (it quotes 800-900), which is the cautious end of a published range rather than a round number. In bp.
both_strandsNoread every base from both directions - what a sequencing facility means by double-stranded coverage, and the standard for anything deposited or published.
region_startNo0-based inclusive start of the region to read. Unset = the whole template. Advanced.

Output Schema

NameRequiredDescription
gapsYesstretches no read reaches - empty means the region is fully read
usedYesthe parameters the plan was actually built under, so a readout never restates them
readsYesone entry per primer in the walk: name (F1, R1, ...), sequence, strand, and the stretch it is expected to read
primersYesjust the primer sequences, in walk order, for ordering
skippedYesanchors where no primer could be designed, each with the reason - never a silently short walk
completeYestrue when every base of the region is read at least once
coverageYesevery stretch of the region, contiguous and in order, with its depth
authorityYesthe published source the read-length and dead-zone defaults come from
readCountYeshow many primers the walk needs
doubleStrandedYestrue when every base is read from both directions
singleStrandedYesstretches read from one strand only, when both were asked for

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds real behavior beyond that: tiled reads with confirmed overlap, both-strands-by-default, and a reported coverage plus un-reachable stretches. It does not address runtime/permission behavior, keeping it below 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what the tool does and the mental model ('a WALK... not one pair'), then the use case, then default rationale. Minimal waste, though the facility-default sentence overlaps with schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still signals that coverage and unreachable stretches are reported. Combined with annotations and a fully documented schema for a 10-parameter tool, nothing an agent needs 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 10 parameters including the rationale for read_length and dead_zone defaults. The description restates the facility-default framing ('MSU RTSF, ABI 3730XL') without adding syntax or meaning the schema lacks, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Design a WALK of sequencing primers') with scope stated precisely: tiled reads covering a whole region, not one pair. It distinguishes itself from the single-pair siblings (design_primer_pairs, design_primers) by naming that exact contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Frames the use case as 'how do I read all 6 kb of this construct' and explicitly states a single pair 'does not answer' it, which gives clear when-to-use context and implies the alternative. It stops short of naming design_primer_pairs directly as the excluded sibling, so it is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_split_sitesA
Read-only
Inspect

Decide where to CUT one sequence into Golden Gate fragments, optimising the split positions and the overhangs they create together. Where design_overhang_set proposes junctions for parts you already have, this fragments a sequence you are about to order: it searches every legal arrangement of fragments in your length window and ranks them by the measured ligation efficiency and fidelity of the overhangs each arrangement produces. Ported from OOGGA (Mukundan & Madhusudhan 2025) and scored against the same Potapov 2018 T4 ligase data the fidelity tools use.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
tracesNohow many ranked alternatives to return. The best arrangement is rarely the only acceptable one, and the runner-up often avoids a site you care about.
datasetNothe measured ligation matrix to score against. OOGGA's own published choice is the T4 18 h 37 C set. Values: BsaI-HFv2 (BsaI-HFv2, Golden Gate cycling (4 nt)), BsmBI-v2 (BsmBI-v2, Golden Gate cycling (4 nt)), Esp3I (Esp3I, Golden Gate cycling (4 nt)), BbsI-HF (BbsI-HF, Golden Gate cycling (4 nt)), SapI (SapI, Golden Gate cycling (3 nt)), T4-01h-25C (T4 DNA ligase, 1 h at 25 C (4 nt)), T4-01h-37C (T4 DNA ligase, 1 h at 37 C (4 nt)), T4-18h-25C (T4 DNA ligase, 18 h at 25 C (4 nt)), T4-18h-37C (T4 DNA ligase, 18 h at 37 C (4 nt)). Advanced.T4-18h-37C
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe sequence to fragment, in one piece. Leave it empty to fragment the open record.
fragmentsNopin the number of fragments instead of letting the search choose. Leave empty to take whatever the length window allows.
exclude_toNoend of that span, exclusive. Only applies when exclude_from is set. Advanced.
max_lengthNolongest allowed fragment, in bases — the vendor's upper limit, or the length you can sequence in one read.
min_lengthNoshortest allowed fragment, in bases — usually what your synthesis vendor will accept.
exclude_fromNostart of a span no cut may fall in — a feature you need kept intact. Use with exclude_to. Advanced.
alien_overhangsNojunctions already committed elsewhere in the assembly (a fixed vector's own ends), which this set must not collide with. Advanced.
fidelity_weightNoexponent on the running FIDELITY — raise it to favour junctions that ligate to the right partner rather than a mismatched one. Advanced.
efficiency_weightNoexponent on the running ligation EFFICIENCY — raise it to favour junctions that ligate readily. Efficiency and fidelity are different failure modes: a junction can ligate eagerly and promiscuously. Advanced.
max_overhang_identityNomost positions two overhangs in the set may share before they are treated as confusable. Lower is stricter and rules out more arrangements. Advanced.

Output Schema

NameRequiredDescription
scoreYesthe objective for the winning arrangement: net efficiency^w x net fidelity^w
breaksYesthe winning arrangement's cut positions, in reading order
reportYesthe whole result, every arrangement in full
datasetYesthe measured matrix actually scored against
fragmentsYesthe fragments to order: sequence, span, length and the overhang at each end. Consecutive fragments overlap by exactly the four-base junction
overhangsYesthe junctions the winning arrangement creates — wire this straight into score_overhang_fidelity to grade the set it chose
candidatesYeshow many arrangements were feasible at all under these constraints
alternativesYesthe other ranked arrangements, each with its own breaks, score and junctions — the best is rarely the only acceptable one
net_fidelityYesnet fidelity across every junction, 0-1
fragment_countYeshow many fragments the winning arrangement needs
net_efficiencyYesnet ligation efficiency across every junction, 0-1

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it discloses the search strategy ('searches every legal arrangement'), the ranking basis (measured ligation efficiency and fidelity), and the scoring provenance (OOGGA / Potapov 2018 T4 ligase data). It does not cover runtime or result-size expectations, keeping it short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and scope, then the sibling distinction, then provenance. Three dense sentences with little waste, though the closing OOGGA/Potapov citation is credence-building rather than operational and could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and all 14 parameters are documented in the schema at 100% coverage. The description supplies purpose, alternative routing and scoring basis, which is sufficient for a read-only design tool; only runtime/result-volume expectations are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries full parameter meaning (length window, traces, weights, exclusions). The description only alludes to the length window and overhang quality in prose and adds no syntax or format detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Decide where to CUT one sequence into Golden Gate fragments') plus the optimisation objective. It also names the sibling it is not — design_overhang_set — and the differentiating condition, so an agent can distinguish it 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes between alternatives: 'Where design_overhang_set proposes junctions for parts you already have, this fragments a sequence you are about to order.' The when-to-use condition is stated, not implied, and the alternative tool is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design_xenium_probesA
Read-only
Inspect

Design Xenium custom-panel padlock targets on the subject transcript to 10x Genomics' published rules (CG000683): two 20 nt arms whose primer3 melting temperatures fall in their windows, a ligation-junction dinucleotide the Xenium ligase accepts, no run of five G in the probe, at least four mismatches across both arms to every other transcript in a BLAST search, and probes at least 10 bp apart. Without BLAST results it returns the targets to search and says the off-target check has not been run.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
spacingNofewest bases between two kept targets. In bp.
tm_ruleNowhich melting temperatures must fall in their windows. 10x: the full length between 68 and 82 °C or each arm between 50 and 70 °C.either
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
blast_csvNoblastn -outfmt 10 output for the targets FASTA this tool returns, searched against the transcriptome (not the genome) with -word_size 7 -strand plus. Without it no target is checked for off-target homology.
junctionsNoligation-junction dinucleotides to accept, from 10x's empirical ligase preferences; 10x strongly recommends avoiding the nonpreferred four.preferred and neutral
max_g_runNolongest run of G the probe may carry; 10x: avoid five or more. Advanced.
arm_lengthNolength of each arm; the target is twice this. 10x's arms are 20 nt, shorter only for a short target whose Tm stays in range. In nt. Advanced.
max_arm_tmNohighest Tm of each arm (inclusive). In °C.
min_arm_tmNolowest Tm of each arm (inclusive). In °C.
prefer_cdsNorank targets inside the subject's CDS feature before the untranslated regions, as 10x advises where possible.
max_full_tmNohighest Tm of the whole target (inclusive). In °C.
min_full_tmNolowest Tm of the whole target (inclusive). In °C.
min_mismatchesNofewest mismatches across both arms an off-target hit must carry for the target to be kept; gaps and unaligned ends count. Only applies when blast_csv is set.
gene_accessionsNocomma-separated accessions (no version) that are this gene, its isoforms included: hits to them are not off-targets. Empty: the subject's name. Only applies when blast_csv is set.
probes_per_geneNotargets to keep; 10x's predesigned panels use eight per gene.

Output Schema

NameRequiredDescription
probesYesthe kept targets, each with its 0-based start, target (mRNA sense), probe (its reverse complement), arm and full-length Tm, junction and its class, and the fewest off-target mismatches. Null until `blast_csv` is given
stagesYeswhat each rule took in and kept, in order, with the reason a skipped check did not run
probeCountYeshow many targets were kept. Null until `blast_csv` is given
explanationYesthe derivation chain: conclusion, interpretation and machinery, generated from this run
targetsFastaYesthe targets that pass the Tm, junction and G-run rules as FASTA, named xenium_<1-based start>, for blastn

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so safety is covered. Beyond that, the description adds real behavioral context: the exact design constraints applied, and the graceful-degradation path where a missing blast_csv yields unverified targets plus an explicit 'off-target check has not been run' notice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the opening clause, followed by the rule list and the no-BLAST fallback. The single dense rule sentence is long but each clause maps to a design parameter, so it earns its place; structure is functional though heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and 100% schema coverage handles parameters. The description supplies the domain ruleset and the degraded-mode behavior, making it largely self-contained for a 16-parameter tool; only explicit sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 16 parameters in detail. The description echoes several defaults (20 nt arms, 4 mismatches, 10 bp spacing) tying them to 10x rules, but adds little syntactic meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Design), a precise resource (Xenium custom-panel padlock targets), and scope (on the subject transcript to 10x Genomics' rules CG000683). This clearly distinguishes it from the many sibling design_* probes tools (design_padlock_probes, design_merfish_probes, design_ish_probes), which an agent would otherwise confuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the workflow: it tells the agent that without BLAST results it only returns targets to search and flags the off-target check as not run, which signals a two-pass usage pattern. However, it never explicitly names when to choose this over the sibling probe-design tools (e.g. design_padlock_probes) or states prerequisites, leaving selection context to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_trace_indelA
Read-only
Inspect

Ask whether a Sanger trace splits into TWO READS OF DIFFERENT LENGTH, which is what a heterozygous insertion or deletion does: clean up to the indel, then a superposition of two sequences offset by its length. This is not mixed-base calling — that asks whether two BASES sit at one position and is blind to a length difference. Emits where the split starts, how long it is, and the two allele sequences the trace deconvolves into, so a pipeline can gate on the answer or carry either allele onward.

NameRequiredDescriptionDefault
tableNothe instrument and polymer the quality scale was calibrated on. There is no universal default: a base scores differently under a different table, and the detector gates on a quality JUMP.3730pop7
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace file to read: its name (`read_F.ab1`) or its project file id. LEAVE IT EMPTY to run on the chromatogram tab that is open, in which case the answer also appears in the rail. A file id is project-specific, so a template ships this unset.
breakpoint_scanNoskip the search and measure the indel at this scan position on the x axis. -1 searches for it.
quality_value_readingNocorrected = read the quality values as TraceTuner's own header declares them, which is the only reading that can detect anything; upstream = reproduce the program as shipped, whose detector never fires.corrected

Output Schema

NameRequiredDescription
foundYeswhether a heterozygous indel was detected. Wire it into a gate
reportYesthe whole finding, including the size in scans and the stutter verdict
longAlleleYesthe allele with the extra bases, from the breakpoint on. N marks a position the deconvolution would not commit to, not a low-quality base
qualityJumpYesthe drop in quality values across the breakpoint. It must exceed 7 for a position to be considered at all, so this is what a negative answer is checkable against
shortAlleleYesthe allele without them, from the breakpoint on
sizeInBasesYeshow many bases the longer allele carries that the shorter one does not
startsAtBaseYesthe 1-based base the split starts at, or 0 when none was found

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: the deconvolution model (clean read up to the indel, then two offset sequences) and what it emits, which helps the agent interpret a positive call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core question, then the biological mechanism, then the contrast with mixed-base calling, then the emission. Dense but every sentence carries signal; the contrast clause is arguably the only non-essential part.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema describing the emitted breakpoint, length and allele sequences, and full annotation coverage, the description need not explain return values. It supplies purpose, mechanism and disambiguation, leaving only fine-grained parameter guidance to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (table, document, breakpoint_scan, quality_value_reading, _subject, _files) is already documented in the schema. The description adds nothing about parameter behavior, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise, specific question ('does the trace split into TWO READS OF DIFFERENT LENGTH') and the biological cause (heterozygous indel), and explicitly distinguishes itself from mixed-base calling. An agent can tell it apart from call_mixed_bases_from_trace 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear condition for selection (heterozygous insertion/deletion lookahead) and rules out the nearest alternative ('This is not mixed-base calling'), plus notes the result can gate a pipeline or carry an allele onward. It does not name the exact sibling tool, leaving a small inference gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

differential_expressionA
Read-only
Inspect

Differential expression from raw RNA-seq read counts, by one of the three standard count models. DESeq2 (Love, Huber & Anders 2014): median-of-ratios size factors, negative-binomial GLM with empirical-Bayes shrunken dispersions, Wald or likelihood-ratio test, Cook's-distance outlier handling, independent filtering, optional LFC shrinkage. edgeR quasi-likelihood (Chen et al. 2025): filterByExpr, TMM normalization, a negative-binomial GLM with bias-adjusted QL dispersions squeezed toward an abundance trend, QL F-test. limma-voom (Law et al. 2014): filterByExpr, TMM, log-CPM with mean-variance precision weights, weighted linear models, moderated t. Takes a gene-by-sample count table and a sample table with the design's variables. Every gene of every validated fit is bit-identical to DESeq2 1.52.0, edgeR 4.10.6 and limma 3.68.5 running in R. Hands its significant genes, tested genes and ranked list on for gene-set enrichment.

NameRequiredDescriptionDefault
nameNoone fitted coefficient to report, by its DESeq2 name (e.g. 'condition_treated_vs_untreated') or its model-matrix column ('conditiontreated'); empty is the last.
testNoWald: one coefficient or contrast. LRT: the full design against `reduced`, testing every removed term at once. Only applies when method is DESeq2.Wald
useTNoWald p-values from a Student t on each gene's summed weights (or the sample count) minus the coefficients, instead of the normal: zinbwave's recommendation for weighted single-cell data. Wald test only. Only applies when method is DESeq2.
alphaNothe target FDR: the summary counts genes below this adjusted p, and DESeq2's independent filtering maximizes rejections at it.
blindNofit the transformation's dispersion trend under ~ 1, blind to the design (DESeq2's default, for quality assessment); off reuses the fitted design and trend, for downstream use when large differences between groups are expected. Only applies when method is DESeq2.
minmuNothe floor on fitted means in the GLM and the dispersion fit; empty is DESeq2's default, 0.5, or 1e-6 with fitType glmGamPoi. Single-cell counts, often below 1, want a small value such as 1e-6 (zinbwave's vignette). Only applies when method is DESeq2.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
countsYesraw read counts (never normalized values or TPM): genes in rows with the gene ID first, samples in columns, tab- or comma-separated, a header row naming the samples.
designNothe design formula over the sample table's columns, the variable of interest last (e.g. '~ batch + condition').~ condition
methodNothe count model: DESeq2 (negative binomial, Wald or LRT), edgeR-QL (negative binomial with quasi-likelihood F-test) or limma-voom (precision-weighted linear model on log-CPM, moderated t).DESeq2
pcaTopNoplotPCA's ntop: the PCA uses this many genes with the largest variance of the transformed values. Only applies when method is DESeq2.
sfTypeNosize factors: median of ratios over genes with no zero (ratio), with zeros allowed (poscounts, for sparse data), or iterated to maximise the NB likelihood of all but the worst-fitting 5% of genes (iterate, when every gene has a zero). Only applies when method is DESeq2.ratio
shrinkNoshrink the reported coefficient's or contrast's log2 fold changes toward zero where the counts cannot support them (DESeq2 lfcShrink), for ranking and plotting by effect size; p-values stay the unshrunken test's. apeglm: adaptive Cauchy prior, posterior mode (a coefficient only). ashr: mixture-of-normals prior, posterior mean. normal: DESeq2's original zero-centred Normal prior (Wald only), a contrast on the expanded model matrix. With lfcThreshold, apeglm and ashr give s-values of a false sign or a fold change inside the threshold, and normal re-tests the shrunken fit. Only applies when method is DESeq2.none
fitTypeNothe dispersion trend: parametric (asymptDisp + extraPois / mean, DESeq2's default, which falls back to local when it does not fit), local (locfit regression of log dispersion on log mean), the mean of gene-wise estimates, or glmGamPoi (gene-wise maximum likelihood by glmGamPoi, a local-median trend and quasi-likelihood shrinkage; with test LRT the p-values are glmGamPoi's quasi-likelihood F test; no outlier replacement, minmu 1e-6, no observation weights). Only applies when method is DESeq2.parametric
reducedNothe reduced design for the likelihood-ratio test. Only applies when method is DESeq2.
samplesYesthe sample table: a header row, then one row per sample with its name (as in the count table's header) first and the design's variables after; the run uses this table's sample order.
weightsNooptional: observation weights (assays(dds)[["weights"]]), the same genes and samples as `counts`, e.g. zinbwave's posterior probability that a single-cell count is not a dropout. DESeq2 divides each gene's weights by their largest and uses them in the base means, the dispersion likelihoods (samples at or below 0.01 leave the Cox-Reid term), the GLM and its tests. Only applies when method is DESeq2.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
contrastNo'factor, numerator, denominator': the log2 fold change of numerator over denominator. Empty is the design's last coefficient. Under edgeR and voom the denominator must be the factor's reference level.
minCountNofilterByExpr: the count, at the median library size, a gene needs in the smallest group's worth of samples (taken as CPM). Only applies when method is edgeR-QL or limma-voom.
pcaGroupNoplotPCA's intgroup: the sample-table variables, separated by commas, that colour the samples (joined with ':' when more than one); empty is the factor of the reported comparison. Only applies when method is DESeq2.
betaPriorNoDESeq2's pre-1.16 default: a zero-mean Normal prior on every level's log2 fold change, so the reported fold changes, SEs and Wald test are the shrunken (MAP) ones. Wald only, no interactions; use instead of `shrink`. Only applies when method is DESeq2.
referenceNoreference level per factor, 'variable=level' separated by commas; a factor not named takes its alphabetically first level, as R does.
transformNothe count transformation the sample-level checks (PCA, sample distances) run on: vst (DESeq2's variance stabilizing transformation, the trend fitted on 1,000 genes; with fewer than 1,000 genes above a mean of 5 use VST), VST (varianceStabilizingTransformation, every gene), rlog (regularized log, a per-gene ridge fit, slow above ~30 samples) or normTransform (log2 of normalized count + 1, no stabilization). none skips the checks. Only applies when method is DESeq2.vst
avgTxLengthNooptional: tximport's average transcript lengths (txi$length), the same genes and samples as `counts`. DESeq2 then normalizes by gene-by-sample factors (each gene's lengths over their geometric mean, times median-of-ratios size factors), correcting for changes in transcript usage between samples. Only applies when method is DESeq2.
cooksCutoffNothe Cook's distance cutoff; empty is DESeq2's F(0.99; p, m - p). Only applies when method is DESeq2.
cooksFilterNoset the p-value of genes with a Cook's-distance outlier to NA. Only applies when method is DESeq2.
filterByExprNokeep only genes edgeR's filterByExpr finds expressed (the edgeR and limma workflows' first step); off fits every gene. Only applies when method is edgeR-QL or limma-voom.
lfcThresholdNotest |log2 fold change| against this threshold instead of 0. Only applies when method is DESeq2.
altHypothesisNowhich side of the threshold is the alternative. Only applies when method is DESeq2.greaterAbs
minTotalCountNofilterByExpr: the total count a gene needs across all samples. Only applies when method is edgeR-QL or limma-voom.
pAdjustMethodNomultiple-testing adjustment across genes (R `p.adjust`).BH
independentFilteringNodrop low-mean genes from the adjustment when that gains rejections at `alpha`. Only applies when method is DESeq2.
minReplicatesForReplaceNosamples per group from which outlier counts are replaced and the gene refitted, instead of flagged. Only applies when method is DESeq2.

Output Schema

NameRequiredDescription
genesYesone row per gene: log2FoldChange, stat (DESeq2 Wald or LRT, edgeR F, voom moderated t), pvalue, padj, why padj is NA, the normalized counts per sample; DESeq2 adds baseMean, lfcSE, the gene-wise, fitted and final dispersions, whether it was refitted and with `shrink` the shrunken fold change, its SE and s-value (normal with lfcThreshold: the shrunken fit's p-value and padj); edgeR and voom add logCPM, the raw, prior and posterior variance (edgeR's QL dispersion) and the total df, and voom the B-statistic
maPlotYeslog2 fold change (shrunken, with `shrink`) against mean normalized count (DESeq2) or average log2 CPM (edgeR, voom), significant genes apart
summaryYesgenes up and down at alpha and tested, with the method's own fit: DESeq2's outliers, low counts, filter threshold, size factors, dispersion trend and shrinkage prior; edgeR's common and average QL dispersion and prior df; voom's span and prior variance; the filterByExpr cutoffs and library sizes
upGenesYessignificant genes with positive log2 fold change, one per line
volcanoYes-log10 p against log2 fold change, significant genes apart
downGenesYessignificant genes with negative log2 fold change, one per line
samplePcaYesDESeq2 runs only (null under edgeR and voom): plotPCA on the transformed counts (`transform`, `blind`): PC2 against PC1 per sample, one series per `pcaGroup` level, each axis labelled with its share of the variance
meanCountsYesDESeq2 runs only (empty under edgeR and voom): every tested gene with its mean normalized count (baseMean), 'gene value' per line: the gene weights for a Wallenius-weighted over-representation test, which corrects for the extra power to call well-counted genes
rankedListYestested genes by their test statistic, decreasing: DESeq2's Wald statistic, voom's moderated t, or edgeR's signed square root of F (a t with the same df): the ranked list for GSEA
testedGenesYesevery gene with an adjusted p-value, one per line: the background (universe) for over-representation analysis
dispersionPlotYesDESeq2: gene-wise, fitted and final dispersions against mean count. edgeR: quarter-root raw, squeezed and trend QL dispersions against average log2 CPM (plotQLDisp). voom: sqrt standard deviation against log2 count size, with the lowess trend that sets the weights
sampleDistancesYesDESeq2 runs only (null under edgeR and voom): the sample checks as data: the transformation and its trend, the PCA genes, percentVar, PC1 and PC2 per sample, the sample-to-sample Euclidean distance matrix over every gene and its complete-linkage clustering (leaf order, merges, heights), as the vignette's heatmap draws it; or why the checks could not run
significantGenesYesgenes with padj below alpha, one per line: the gene list for over-representation analysis

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the bar is lower. The description adds a genuine behavioral claim — bit-identical results to DESeq2 1.52.0 / edgeR 4.10.6 / limma 3.68.5 — but says nothing about runtime cost, memory, or failure modes for a 34-parameter compute job.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and closed with the output handoff; most sentences earn their place. The three mid-paragraph method summaries partially duplicate the `method` and `shrink`/`fitType` enum descriptions in the schema, which is minor redundancy for a tool of this complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema, full annotation coverage, and 100% parameter documentation, the description only needs to frame inputs and results — which it does (raw counts + sample table in, significant/tested/ranked genes out for enrichment). Nothing an agent needs in order to select and call this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed per-parameter prose, so the schema already carries parameter meaning. The description adds no parameter-specific guidance beyond naming the two required tables and the general 'count model' concept — baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource — differential expression from raw RNA-seq read counts — and immediately names the three model families it implements, so an agent can distinguish it from relative_expression, calculate_rnaseq_power, and the gene_set_* siblings. The closing sentence clarifies its position in the pipeline (producer of ranked lists for enrichment).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the required inputs (a gene-by-sample count table plus a sample table carrying the design's variables) and names the downstream consumer, which implies context. But it gives no explicit when-to-use/when-not guidance and never says why to pick DESeq2 over edgeR-QL or limma-voom beyond restating each model's internals, which the `method` enum already covers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

digest_fragmentsAInspect

Digest the subject with the given enzymes into real fragments (sequence + both overhangs). Emits the selected fragment as a NEW record, so a downstream gel/map/ORF runs on that fragment — the digest→assembly hand-off.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesenzymes to digest with — resolved against the bundled cut catalog (REBASE spellings; smaller than the REBASE dossier the editor shows). Left unset, the run uses your active enzyme collection.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
fragment_indexNowhich fragment to emit as the downstream record (0-based, in cut order).

Output Schema

NameRequiredDescription
countYesnumber of fragments
recordYesthe selected fragment as a linear record
lengthsYesfragment lengths in cut order
fragmentsYesevery fragment (sequence + left/right overhang + enzyme)
parentSpanYeswhere the emitted fragment sat on the parent, [start, end). A start above the end spans the origin

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavioral context beyond the annotations: the digest output carries both overhangs, and the selected fragment becomes a NEW record (consistent with readOnlyHint=false and destructiveHint=false — it creates rather than mutates). Enzyme resolution and the default active-collection fallback are covered in the schema rather than the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences that front-load the action and then explain the downstream consequence. Every clause carries information, though the second sentence packs workflow context and behavior into one dash-joined phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and the annotations carry the safety profile. The description supplies the workflow role and the new-record emission, so an agent has enough to call it correctly; only explicit alternative routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter (enzymes, _subject, _files, fragment_index) is documented inline, so the schema does the heavy lifting. The description only implicitly references the enzyme and fragment-selection parameters, adding no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (digest) and resource (the subject, with given enzymes) and specifies the output form: real fragments with sequence plus both overhangs, emitted as a NEW record. This clearly separates it from siblings like find_restriction_sites, enzyme_cut_counts or size_fragments, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Positions the tool in a workflow — 'the digest→assembly hand-off' and its use when a downstream gel/map/ORF should run on the emitted fragment — which gives a clear sense of when to reach for it. It stops short of naming alternatives or stating when NOT to use it (e.g., when only cut counts or site positions are wanted).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

digest_reaction_conditionsA
Read-only
Inspect

The reaction a digest needs, from NEB's own data: the NEBuffer that serves every enzyme together (scored on the WORST enzyme's percent activity, a star-activity buffer disqualified at any percent), the incubation temperature(s), any cofactor that must be added (SAM or ATP), and each product's heat-inactivation step, or the products NEB cannot heat-inactivate. One call is one tube: enzymes that need different temperatures or have no common buffer come back with singleTube: false. Needs no open record.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesenzymes or NEB product names in one tube (EcoRI, BamHI-HF). A name NEB does not sell is returned under `unknown`, never dropped. Left unset, the run uses your active enzyme collection.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
bufferYesthe recommended NEBuffer, or null when every buffer is starred or at 0% for one of the enzymes
buffersYesevery NEBuffer scored, best first: worst percent, star-active enzymes, usable, per-enzyme activity
unknownYesnames NEB does not sell, so no conditions exist for them
cofactorsYescofactors the reaction requires (SAM, ATP), from REBASE
singleTubeYestrue when one buffer AND one temperature serve every enzyme
temperaturesCYesincubation temperatures required, ascending; more than one means more than one step
heatInactivationYeswhether the tube can be heat-killed, each product's NEB step (temperature, minutes), and the products that need a column or gel cleanup instead

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds real behavioral context the annotations cannot: buffer selection is scored on the WORST enzyme's percent activity, star-activity buffers are disqualified at any percent, and the singleTube=false failure mode when enzymes share no buffer or temperature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first clause, followed by the concrete outputs it returns. The opening sentence is long and parenthetical-heavy, but every part carries information (buffer scoring rule, cofactor, heat inactivation) and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema and full schema descriptions, so return values need not be explained, yet the description still usefully characterizes them. It also covers the failure mode and the no-open-record requirement. Only the absence of explicit sibling routing keeps it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the enzymes, _files, and _subject parameters are each richly documented in the schema itself, so the baseline is 3. The description adds the 'one tube' framing for the enzymes array and the no-common-buffer outcome, but contributes little beyond the schema on parameter syntax or formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 returns the buffer, incubation temperature, cofactor, and heat-inactivation step a digest reaction needs — with enough specificity that an agent knows it computes reaction conditions rather than fragments. It does not name or contrast itself with the nearest siblings (digest_fragments, find_restriction_sites, enzyme_cut_counts), so differentiation still requires inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent can infer this is a planning/lookup step before running a digest, and the 'one call is one tube' note tells it how to batch enzymes. However, there is no explicit when-to-use guidance, no statement of alternatives (e.g. digest_fragments for actual cutting), and no prerequisites beyond 'Needs no open record.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_annotation_contradictionsA
Read-only
Inspect

Find the signal peptides or transmembrane segments in reviewed human UniProt that a sequence predictor contradicts. Each feature backed by experiment (evidence code ECO:0000269) is scored to say what a confirmed feature looks like to the predictor; every other feature, annotated from similarity, sequence analysis or a rule, is ranked among those scores, and its conformal p-value (1 + experimental features scoring at or below it) / (experimental + 1) is corrected across all of them. Signal, by either predictor: von Heijne's weight-matrix score (EMBOSS sigcleave) of the cleavage site UniProt annotates, or DeepSig's probability that the protein carries a signal peptide at all (its eukaryotic network ensemble, from the first 96 residues). Transmembrane: the share of the segment the HMM-TM topology model labels membrane helix. A contradiction is a disagreement between two models, to be read, not a correction of UniProt: von Heijne's matrix and the HMM-TM model are weaker than the SignalP and TMHMM runs behind most such annotations; DeepSig is of their generation. The result carries a self-check, half the experimental features tested against the other half, whose calls are all false by construction.

NameRequiredDescriptionDefault
alphaNofalse discovery rate at which an annotation is called contradicted.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
featureNowhich annotation to test: signal peptides or transmembrane segments. Values: signal (Signal peptides), transmembrane (Transmembrane segments).signal
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
decodingNotransmembrane only: which HMM-TM decoder labels the residues. N-best is left out: it takes minutes per long protein, and the corpus has 5,231. Values: viterbi (Viterbi), posterior-viterbi (Posterior-Viterbi), optimal-accuracy (Optimal accuracy). Only applies when feature is transmembrane. Advanced.viterbi
predictorNosignal only: von Heijne's matrix asks whether signal peptidase would cut where UniProt says; DeepSig asks whether the protein has a signal peptide at all (it loads 9.8 MB of network weights and runs twenty networks per protein, so it is far slower than the matrix). Values: von-heijne (von Heijne matrix), deepsig (DeepSig). Only applies when feature is signal.von-heijne
correctionNoBenjamini–Hochberg (independent or positively dependent tests; conformal p-values against one calibration set are positively dependent) or Benjamini–Yekutieli (any dependence; less power). Values: BH (Benjamini–Hochberg), BY (Benjamini–Yekutieli).BH

Output Schema

NameRequiredDescription
countYeshow many annotations are contradicted
resultYesthe full result, every tested annotation included
selfCheckYeshalf the experimental features tested against the other half: raw p ≤ α should be near α of them, and FDR calls near none
contradictedYesthe annotations contradicted at the chosen false discovery rate: accession, gene, span, statistic, p and q

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, non-destructive), and the description goes well beyond them: it explains the scoring method, warns that contradictions reflect weaker models than SignalP/TMHMM, discloses that the self-check's calls are false by construction, and notes DeepSig's cost (9.8 MB of weights, twenty networks per protein). This is exactly the interpretive context an agent needs before trusting 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and every sentence is information-bearing, but the prose is dense with stacked parentheticals and statistical jargon that make it hard to scan. The method exposition (conformal p-values, halves self-check) could be tightened without losing agent-facing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with nested parameters and an output schema, the description is nearly complete: it defines what a contradiction is, caveats interpretation, and flags a pathological self-check result. Only explicit routing against sibling prediction/topology tools is missing, and return-value explanation is appropriately delegated to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds conceptual meaning to the enum choices: it explains what each predictor actually asks (cleavage-site cut vs. presence of a signal peptide) and how the conformal p-value and FDR correction work, which helps an agent reason about alpha and correction rather than just read their definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource: finding signal peptides or transmembrane segments in reviewed human UniProt that a sequence predictor contradicts. That is far more precise than a restated name, though it never explicitly distinguishes itself from siblings like protein_signal_peptide, protein_topology, or protein_membrane_profile, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the scope (reviewed human UniProt, signal or transmembrane features) tells the agent when the tool applies, and the 'to be read, not a correction' framing clarifies intent. However, no alternative tool is named and there is no explicit when-not-to-use guidance, so the agent must infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_codon_outliersA
Read-only
Inspect

Score every coding sequence of a genome against the genome's own codon usage and report the genes whose synonymous codon choice that average does not explain, with the false discovery rate controlled across the genes. Records from different files are different genomes: each is scored against its own file's usage, and the false discovery rate is controlled once across every gene of every genome. Each gene gets Karlin's B and Supek & Vlahoviček's MILC against the pooled usage of the genes, and a G-test of its codon choice within each amino acid against that usage (χ², degrees of freedom from the amino acids it uses). Outliers are typically highly expressed genes (ribosomal proteins are the most deviant class), genes of unusual composition, and some of foreign origin; an outlier is NOT evidence of horizontal transfer, since codon bias is a poor indicator of transfer.

NameRequiredDescriptionDefault
alphaNofalse discovery rate at which a gene is reported as an outlier.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
alt_initNocount every alternative start codon as Met throughout each gene, as coRdon does by default. Off reads an internal alternative start codon as its own amino acid. Advanced.
sequencesNothe genomes' coding sequences: wire upstream records here, or list library document names (each record of a CDS FASTA is one gene, read in frame from its first base; each file is one genome).
correctionNoBenjamini–Hochberg (independent or positively dependent tests) or Benjamini–Yekutieli (any dependence; less power). Values: BH (Benjamini–Hochberg), BY (Benjamini–Yekutieli).BH
file_codesNoa genetic code for one file, as `file=code` (e.g. `Mycoplasma_genitalium_cds.fna=4`): that file's genes are read with it, every other file with genetic_code. For a corpus whose genomes translate differently. Advanced.
min_codonsNogenes with no more codons than this leave the reference and the result: the G-test's χ² limit is poor for short genes. In codons.
pool_filesNoscore every named record as ONE genome, for a genome split across files (one per chromosome). Off: each file is its own genome, scored against its own usage.
genetic_codeNoNCBI genetic code the genes are read with (4 for Mycoplasma, 11 for most bacteria; 1 and 11 group codons identically). Values: 1 (1 · Standard), 2 (2 · Vertebrate Mitochondrial), 3 (3 · Yeast Mitochondrial), 4 (4 · Mold Mitochondrial, Protozoan Mitochondrial, Coelenterate Mitochondrial, Mycoplasma, Spiroplasma), 5 (5 · Invertebrate Mitochondrial), 6 (6 · Ciliate Nuclear, Dasycladacean Nuclear, Hexamita Nuclear), 9 (9 · Echinoderm Mitochondrial, Flatworm Mitochondrial), 10 (10 · Euplotid Nuclear), 11 (11 · Bacterial, Archaeal and Plant Plastid), 12 (12 · Alternative Yeast Nuclear), 13 (13 · Ascidian Mitochondrial), 14 (14 · Alternative Flatworm Mitochondrial), 15 (15 · Blepharisma Macronuclear), 16 (16 · Chlorophycean Mitochondrial), 21 (21 · Trematode Mitochondrial), 22 (22 · Scenedesmus obliquus Mitochondrial), 23 (23 · Thraustochytrium Mitochondrial), 24 (24 · Rhabdopleuridae Mitochondrial), 25 (25 · Candidate Division SR1 and Gracilibacteria), 26 (26 · Pachysolen tannophilus Nuclear), 27 (27 · Karyorelict Nuclear), 28 (28 · Condylostoma Nuclear), 29 (29 · Mesodinium Nuclear), 30 (30 · Peritrich Nuclear), 31 (31 · Blastocrithidia Nuclear), 32 (32 · Balanophoraceae Plastid), 33 (33 · Cephalodiscidae Mitochondrial).

Output Schema

NameRequiredDescription
genesYesevery gene scored: codons, B, MILC, G, degrees of freedom, p and q
resultYesthe full result, with the settings that produced it
skippedYesgenes left out as too short, with their codon counts
outliersYesgenes at q ≤ alpha, largest MILC first
outlierCountYeshow many genes were called outliers

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnlyHint, destructiveHint=false), and the description goes well beyond that: it discloses the exact scoring statistics (Karlin's B, MILC, per-amino-acid G-test), the scope of FDR control across all genes of all genomes, that short genes below min_codons leave the result, and which gene classes typically surface as outliers. This is unusually rich behavioral disclosure for a read-only analysis tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and every sentence is substantive, including the specific statistical methods and the anti-misinterpretation caveat. There is mild redundancy between the first sentence and the following 'Records from different files are different genomes' sentence, which restates the per-file grouping rather than extending it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with nested record objects and an output schema, the description supplies the multi-file/multi-genome execution model, the statistics computed, the FDR scope, and the interpretation caveat. Nothing an agent needs in order to call it correctly is missing, and return-value shape is covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage the baseline is 3, but the description adds real semantic context beyond the schema: it explains that each file is its own genome scored against its own usage unless pooled, and that FDR is controlled once across every genome, which directly clarifies the pool_files/file_codes semantics. It does not add much to alpha, correction, or genetic_code beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource chain (score every CDS against the genome's own codon usage, report genes the average does not explain, with FDR control), which is far more precise than a tautology. It implicitly separates itself from siblings like codon_usage_analysis and codon_optimality via the FDR-controlled outlier framing, but never names or contrasts any sibling explicitly, so it stops 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the method description (use it to find genes with anomalous synonymous codon choice), and the closing note that 'an outlier is NOT evidence of horizontal transfer' usefully cautions against a misinterpretation. However, there is no explicit when-to-use statement, no prerequisites, and no routing against the numerous sibling codon tools, leaving the agent to infer the selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_flag_ratesA
Read-only
Inspect

Measure how often a corpus of maps carries a cryptic σ70 promoter, a cryptic splice site or a synthesis-breaking repeat MORE EXTREME THAN CHANCE, rather than how many it carries. Every map of a few kilobases spells promoters, splice donors and repeats, so a raw hit count measures length and composition; here each map's own extreme (its most negative promoter ΔG, its highest MaxEntScan donor and acceptor score, its longest homopolymer, tandem repeat, repeated stretch and hairpin arm) is scored against k-let-preserving shuffles of that same map, and the false discovery rate is controlled across the corpus within each statistic. No statistic uses a threshold: none of the three models publishes one, and a vendor's repeat limit is a product's capability, which check_manufacturability answers instead. The result is a per-statistic rate with an exact binomial interval, plus every map's own test. Cost is dominated by the σ70 scan at roughly a third of a second per map per shuffle, so a corpus of maps at the default 99 shuffles is minutes of work; drop flags to the statistics you need to make it cheaper.

NameRequiredDescriptionDefault
seedNoseed for the shuffles. Each record draws from seed + its own index, so a record's answer does not depend on the rest of the corpus. Advanced.
alphaNofalse discovery rate at which a record counts towards a flag's rate.
flagsNowhich statistics to run. Empty runs all seven.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
shufflesNoshuffles per record. The smallest p the null can give is 1 / (shuffles + 1), which is what bounds how small a corrected q can get.
sequencesNothe corpus: wire upstream records here, or list library document names. Each is one record of the sweep.
shuffle_kNok-let size the shuffles preserve. 2 holds every dinucleotide count, which is what all three statistics read.
correctionNoBenjamini–Hochberg (independent or positively dependent tests) or Benjamini–Yekutieli (any dependence; less power). Values: BH (Benjamini–Hochberg), BY (Benjamini–Yekutieli).BH
include_subjectNoalso test the node's subject (the open or wired record).

Output Schema

NameRequiredDescription
hitsYesevery record whose statistic beat chance, smallest p first
ratesYesper statistic: records tested, records above chance, the rate and its exact 95% interval
sweepYesthe full result, including the records tested
testsYesevery (record, statistic) test: the observed statistic, the shuffles' mean, p, q and the Monte Carlo interval
hitCountYeshow many (record, statistic) tests were called
nullModelYesthe null the p-values stand on, stated with every run

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description's burden is lower, yet it adds a great deal: the statistical method (k-let-preserving shuffles, FDR controlled within each statistic), the explicit absence of thresholds, and a concrete cost model ('roughly a third of a second per map per shuffle', 'minutes of work' at 99 shuffles). It also discloses the result shape (per-statistic rate with exact binomial interval plus per-map tests), which is exactly the kind of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence and the remaining sentences each carry load (justification for the statistical approach, sibling routing, cost model, cost-reduction lever). It is dense and the opening sentence is a run-on with an embedded contrast, so the structure costs some readability, but for a 10-parameter statistical tool the length is defensible rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still sketches the result anyway. For a read-only, closed-world tool with nested `_subject`/`_files` inputs, it supplies the method, the no-threshold rationale, the sibling that handles thresholds, and the compute budget — everything an agent needs to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the schema already documents every field including defaults, ranges and the 1/(shuffles+1) p-value bound. The description goes beyond it by tying parameters to operational consequences: `flags` controls cost, `shuffles` bounds the achievable corrected q, and the three statistics models map onto the flag set. That cross-parameter interaction is genuine added meaning, though no syntax or format detail is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (measure/discover the rate of) on a specific resource (cryptic σ70 promoters, splice sites, synthesis-breaking repeats across a corpus), and immediately distinguishes itself from raw hit counting. It also names the sibling it is not: threshold/repeat-limit questions are routed to `check_manufacturability`. An agent can separate this from `scan_sigma70_promoters` or `scan_splice_sites` 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-not (anything asking for a threshold is out of scope, and `check_manufacturability` answers the vendor-limit question) and a cost-control hint ('drop `flags` to the statistics you need to make it cheaper'). The core when-to-use — you want significance against a null rather than a count — is stated as a contrast rather than a directive, and the raw-count siblings are not named explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_gene_tree_discordanceA
Read-only
Inspect

Find the genes whose own alignment rejects the species tree. Each named alignment file is one gene, its records the taxa, named as the species tree's tips. For every gene the species tree and each of its nearest-neighbour rearrangements (two per internal branch) is fitted by maximum likelihood under GTR + Γ (rates, base frequencies and shape fitted on the species tree, branch lengths refitted on each rearrangement), and the Shimodaira–Hasegawa test asks whether the species tree is significantly worse than the best of them; the false discovery rate is controlled across genes. A rejection says the gene fits another tree better: incomplete lineage sorting does that to a share of genes among closely spaced species, and so do hidden paralogy, alignment error and transfer, so it is a gene to read, never a call of any one of them. Also reports which genes' best tree is not the species tree, rejected or not, and which alternative trees they choose. Graded against phangorn's pml, optim.pml and SH.test on 122 great-ape genes. About a second of fitting per gene in a browser.

NameRequiredDescriptionDefault
seedNoseed for the bootstrap. Each gene draws from seed + its own index, so a gene's p does not depend on the rest of the corpus. Advanced.
alphaNofalse discovery rate at which a gene counts as rejecting the species tree.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sh_formNohow each replicate is measured: from its best tree, as Shimodaira and Hasegawa (1999) and Goldman et al. (2000) define the test, or from its worst, as phangorn's SH.test computes it. They agree when the replicates are symmetric. Values: published (Published (from the best tree)), phangorn (phangorn (from the worst tree)). Advanced.published
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
alignmentsYesthe gene alignments: library file names, each an aligned multi-FASTA with one record per taxon, the record names being the species tree's tips.
correctionNoBenjamini–Hochberg (independent or positively dependent tests) or Benjamini–Yekutieli (any dependence; less power). Values: BH (Benjamini–Hochberg), BY (Benjamini–Yekutieli).BH
replicatesNoRELL bootstrap replicates of the SH test. The smallest nonzero p is 1 / replicates; a p of 0 means no replicate reached the observed difference, which evidence reads as 1 / (replicates + 1).
species_treeYesthe species tree in Newick, tips named as the alignments' records. Rooted or not; it is tested unrooted.
gamma_categoriesNodiscrete Gamma rate categories; 1 fits no rate variation among sites. Advanced.

Output Schema

NameRequiredDescription
genesYesevery gene: sites, each candidate tree's log-likelihood and SH p, the species tree's p and q
sweepYesthe full result
rejectedYesgenes whose alignment rejects the species tree at the chosen false discovery rate
discordantYesgenes whose best tree is not the species tree, rejected or not
alternativesYeseach alternative tree some gene prefers, with how many prefer it and how many of those reject the species tree

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, destructiveHint false, openWorldHint false), and the description adds substantial context beyond them: runtime cost ('about a second of fitting per gene in a browser'), the external validation ('graded against phangorn's pml, optim.pml and SH.test on 122 great-ape genes'), the exact model and test procedure, and a candid interpretation caveat that rejection is 'a gene to read, never a call of any one of them.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and most sentences carry load: method, FDR control, interpretation, output, validation, and cost. It is dense but not padded, though the single very long sentence about the fitting procedure could be split for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 10-parameter statistical tool with an output schema present, the description supplies everything an agent needs: inputs, the statistical procedure, what is reported (rejected genes plus genes whose best tree is not the species tree and which alternatives they choose), runtime, and interpretation limits. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining the fitting procedure that governs the advanced parameters (GTR + Gamma, rates/frequencies/shape fitted on the species tree, branch lengths refitted on each rearrangement) and by clarifying that alignments are one gene per file with taxa named as the species tree's tips. It does not add per-parameter detail beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource: 'Find the genes whose own alignment rejects the species tree.' It is clearly a gene-level SH-test screen rather than a generic tree comparison. However, it never differentiates itself from near-identical siblings like discover_tree_incongruence or compare_trees, leaving the agent to infer which one to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the method description (you run it on a set of gene alignments plus a species tree), and it explains how to read a rejection. But it gives no explicit when-to-use, when-not-to-use, or named alternative among the many tree-related siblings, so selection guidance is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_reference_concordanceA
Read-only
Inspect

Ask whether a reference-gene stability ranking holds across conditions, and which candidate genes rank well everywhere rather than in one tissue or treatment. Each condition (the Group column of a long-format Cq table) is ranked by geNorm on its own samples; the conditions are then the blocks of a Friedman test and Kendall's W says how far they agree (0 independent orders, 1 the same order everywhere), with an asymptotic χ² p and a Monte Carlo p from shuffling each condition's ranks. Returns every gene's rank in every condition, its mean rank (the meta-ranking) and its best and worst. geNorm cannot order its two most stable genes, so they share rank 1.5 in every condition. Use rank_reference_genes for one condition's ranking by all four algorithms.

NameRequiredDescriptionDefault
seedNoseed for the shuffles. Each permutation draws from its own stream, so one can be re-run alone. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cq_tableYesthe long-format table `Target,Sample,Group,Cq`, one row per measurement; Group is the condition each sample was measured in, and every gene must be measured in every sample.
permutationsNoshuffles of the ranks within each condition. The smallest p is 1 / (permutations + 1).

Output Schema

NameRequiredDescription
pYesMonte Carlo p of W against within-condition shuffles
wYesKendall's coefficient of concordance across conditions
genesYesevery gene, most stable on average first: its rank in each condition, mean rank, best and worst
resultYesthe full result
nullModelYesthe null, stated with every run
conditionsYeseach condition's geNorm order with M

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/non-destructive annotations, the description discloses substantial behavioral traits: per-condition geNorm ranking, Friedman blocking, Kendall's W interpretation (0 independent vs 1 identical), both an asymptotic X² p and a Monte Carlo p, and the geNorm tie behavior (two most stable genes share rank 1.5). These are non-obvious semantics an agent could not get from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and method-dense, but it is front-loaded with the core question and each statistical clause (Friedman, Kendall's W, asymptotics, Monte Carlo) earns its place by explaining output interpretation. Slightly heavy for its size, but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full parameter coverage and read-only annotations, everything an agent needs is present: the input format, the statistical procedure, the output semantics, and the routing alternative. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema — it clarifies that the Group column of the long-format Cq table defines each condition, that every gene must be measured in every sample, and that the smallest achievable permutation p is 1/(permutations+1). It goes past restating schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource — testing whether a reference-gene stability ranking holds across conditions — and immediately distinguishes itself from the sibling rank_reference_genes by scoping (across conditions vs one condition). An agent can tell what this tool does and how it differs 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the alternative tool (`rank_reference_genes` for one condition's ranking by all four algorithms) and the condition that selects this tool instead (asking whether ranks agree across conditions). The when-to-use routing is spelled out, not left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_reference_stabilityA
Read-only
Inspect

Ask whether the genes used to normalize expression (reference or housekeeping genes, such as GAPDH, ACTB or B2M) are more or less variable across human tissues than genes of the same abundance, on GTEx v8 median expression. Each candidate's standard deviation of log2(TPM + pseudocount) across the chosen tissues is ranked among the genes nearest it in mean expression (1,000 by default, from the 19,107 protein-coding genes GTEx measures), giving one p for 'more variable than its peers' and one for 'steadier', each corrected across the candidates. The four rankers the field runs (geNorm M, NormFinder, BestKeeper, comparative ΔCt, and RefFinder's consensus) also order the candidates against each other, reading the tissues as samples. A ranker always finds a most stable gene; the null says whether any candidate is stable at all. Tissue medians hide the variation between people within a tissue, so this answers 'across tissues', not 'across samples of one tissue'.

NameRequiredDescriptionDefault
alphaNofalse discovery rate at which a candidate is called more variable, or steadier, than its peers.
genesYesthe candidate reference genes, as current HGNC symbols (GAPD is GAPDH).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
tissuesNoGTEx tissue names to compare across, three or more; empty means all 54.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
correctionNoBenjamini–Hochberg (independent or positively dependent tests) or Benjamini–Yekutieli (any dependence; less power). Values: BH (Benjamini–Hochberg), BY (Benjamini–Yekutieli).BH
neighboursNohow many genes nearest in mean expression each candidate is ranked among. The smallest p it can give is 1 / (neighbours + 1).
pseudocountNoadded to TPM before the logarithm, so a tissue with no expression has one. Advanced.

Output Schema

NameRequiredDescription
resultYesthe full result
stableYesthe candidates steadier than their expression peers at the chosen false discovery rate
rankersYesgeNorm M, NormFinder, BestKeeper, comparative ΔCt and the RefFinder consensus over the candidates
unstableYesthe candidates more variable across tissues than their expression peers at the chosen false discovery rate
candidatesYesevery candidate's mean and SD of log2 expression, the expression band of its peers, its percentile among them and both p and q

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint and non-destructiveness, so the bar is lower, but the description adds real interpretive context: that 'a ranker always finds a most stable gene' so only the null tells you if a candidate is actually stable, and that tissue medians hide within-tissue inter-individual variation. These are genuine behavioral caveats not present in the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core question is front-loaded and almost every clause carries information. It is a single dense block with very long sentences, and it contains a small internal slip ('four rankers' followed by a list of five), which slightly undercuts readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, nested-schema, output-schema-bearing tool, the description supplies the statistical model, the null/ranker distinction, and the tissue-vs-sample limitation. With an output schema present it need not explain return values, and the remaining gap (which sibling to use for pure ranking) is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by giving semantics the schema does not, such as the 1,000-neighbour default, the 19,107 protein-coding background, the FDR correction applying across candidates, and the smallest attainable p (1/(neighbours+1)). It stops short of mapping these to individual named parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise, testable question: whether reference/housekeeping genes (GAPDH, ACTB, B2M) are more or less variable across tissues than abundance-matched peers on GTEx v8. This is a specific verb+resource that an agent can distinguish from the neighboring rank_reference_genes and discover_reference_concordance tools. The statistical framing (p for 'more variable' vs 'steadier') pins down exactly what is being asked.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit scope exclusion — 'this answers across tissues, not across samples of one tissue' — and explains when the null hypothesis matters versus the rankers. However, it never names the sibling tools (e.g. rank_reference_genes) or says which alternative to pick, so routing is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_site_avoidanceA
Read-only
Inspect

Sweep a set of sequences against every exact recognition site in the NEB catalog and report the sites each one carries far less (avoided) or far more (enriched) often than a stated null predicts, with the false discovery rate controlled across every (sequence, site) test. Avoidance is evidence of the restriction–modification systems a lineage has lived with, and a site a design can rely on being rare. Three nulls: base composition (order-0, Poisson); k-let-preserving shuffles (uShuffle), which holds dinucleotide skews such as CpG depletion in the null rather than reporting them as findings; and R'MES's maximal-order Markov model, the standard in published avoidance analyses, which judges a site of length k against the record's own (k−1)-mers so only what those cannot explain is reported.

NameRequiredDescriptionDefault
seedNoseed for the shuffles, so a run reproduces. Only applies when null_model is shuffle. Advanced.
alphaNofalse discovery rate at which a site is reported avoided or enriched.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesNorestrict the sweep to these enzymes' sites (NEB names). Empty sweeps every exact site in the catalog; degenerate (IUPAC) sites are never swept and are listed in the result. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
shufflesNoshuffles per record. The smallest p the null can give is 1 / (shuffles + 1). Only applies when null_model is shuffle.
positionsNoalso return every occurrence's coordinate and strand, for drawing on a map. Advanced.
sequencesNothe corpus: wire upstream records here, or list library document names. Each is one record of the sweep.
shuffle_kNok-let size the shuffles preserve. 2 holds every dinucleotide count, so CpG depletion is in the null. Only applies when null_model is shuffle.
correctionNoBenjamini–Hochberg (independent or positively dependent tests) or Benjamini–Yekutieli (any dependence, including overlapping sites on one sequence; less power). Values: BH (Benjamini–Hochberg), BY (Benjamini–Yekutieli).BH
null_modelNowhat a site is rare relative to: base composition, shuffles that keep the record's own k-let counts, or the record's own (k−1)-mers for a site of length k (R'MES maximal order, Gaussian score). Values: order0 (Base composition (order-0)), shuffle (k-let shuffles (uShuffle)), maximal (Maximal-order Markov (R'MES)).order0
include_subjectNoalso sweep the node's subject (the open or wired record).
min_site_lengthNoshortest recognition site swept. In bp.

Output Schema

NameRequiredDescription
sweepYesthe full result, including the records swept and the degenerate sites skipped
testsYesevery (record, site) test: observed, expected, ratio, both tails and both q-values; under the maximal-order null also the R'MES score z and its variance
avoidedYestests whose low-tail q is at or below alpha, most extreme ratio first
enrichedYestests whose high-tail q is at or below alpha, most extreme ratio first
nullModelYesthe null the p-values stand on, stated with every run
correctionYesthe multiple-testing correction that ran, and why it is valid
avoidedCountYeshow many (record, site) tests were called avoided
enrichedCountYeshow many (record, site) tests were called enriched

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description goes beyond that by disclosing the statistical behavior: FDR is controlled 'across every (sequence, site) test,' and the three nulls are explained, including what each does and does not treat as signal (e.g. uShuffle holding CpG depletion in the null). It omits compute cost/runtime characteristics, keeping it out of the top band.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in the first sentence with the enrichment/avoidance outcome and the FDR guarantee. The remaining sentences are dense but each carries information; it runs long and would benefit from breaking the null-model discussion out, so it is not maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and annotations carry the safety profile. It covers purpose, statistical meaning, and the three null models, which is enough for correct invocation; the main gap is the absence of explicit when-to-use routing against restriction-site siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline would be 3. The description adds genuine meaning on top, elaborating the null_model choices (order-0 Poisson, uShuffle k-let shuffles, R'MES maximal-order Markov judging a length-k site against the record's own (k−1)-mers) far beyond the enum labels, which is the semantically dominant parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with precise scope: 'Sweep a set of sequences against every exact recognition site in the NEB catalog and report the sites each one carries far less (avoided) or far more (enriched) often than a stated null predicts.' The statistical framing (FDR-controlled avoidance/enrichment) clearly separates it from simple finders like find_restriction_sites or enzyme_cut_counts, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives motivating context ('Avoidance is evidence of the restriction–modification systems a lineage has lived with, and a site a design can rely on being rare') but never states when to choose this over alternatives or any exclusions. Usage is implied by the biological framing rather than spelled out, and no sibling is named as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_target_validationA
Read-only
Inspect

Test a hypothesis that a gene drives a phenotype ("gene G regulates IL-2 production") the way POPPER does: each evidence table is one falsification test, an implication of the hypothesis that a gene-level score could contradict (expression in the relevant tissue, association with related disease, interaction with genes annotated to the process). Under the null that G is exchangeable with any gene the tables score, G's p in each table is the share of genes scoring at or beyond it; each p is calibrated to the e-value κ·p^(κ−1), the e-values are multiplied in the order given, and the hypothesis passes when the product exceeds 1/α. The product is a valid e-value only when the tests are independent under the null, so the run also reports the joint p: the product's own share among every gene's product, valid whatever the tables' dependence. Returns every test's score, rank, p, e and running product, the test after which the product first crossed 1/α, and the joint p. Each table is gene<TAB>score with one header line; the gene must be in every table.

NameRequiredDescriptionDefault
geneYesthe gene under test, as the tables spell it (HGNC symbol for the bundled corpus).
alphaNothe hypothesis passes when the product of e-values exceeds 1/α.
kappaNoκ of the p-to-e calibrator κ·p^(κ−1); POPPER's default is 0.5. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
tablesYesthe falsification tests in the order to apply them: each `{ name, text, direction }`, where `text` is `gene<TAB>score` with a header line and `direction` is the end of the score the hypothesis predicts, `greater` (default) or `less`.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
testsYeseach test: score, genes at or beyond, p, e and running product
jointPYesthe product's share among every gene's product
resultYesthe full result
combinedYesthe product of the calibrated e-values
rejectedYeswhether the product of e-values exceeded 1/α
nullModelYesthe null, stated with every run

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are suppressed (title plus readOnly/openWorld/destructive), but the description adds substantial behavior beyond them: order matters because e-values are multiplied 'in the order given,' the product is valid only under test independence, and a joint p is reported as the dependence-robust fallback. It also states the exact table format and the requirement that the gene appear in every table, giving the agent real operating constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first clause, but the rest is a dense run-on chain of method details (calibration formula, multiplication, validity caveat, return list) in very long sentences. All content is arguably relevant to such a method-heavy tool, but it is heavy going rather than crisp.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, yet the description still enumerates them (score, rank, p, e, running product, first crossing, joint p) for orientation. Given the statistical complexity and 6-parameter nested schema, it covers what an agent needs to invoke correctly, though the independence/calibration caveats could be tightened.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning not in the schema: the gene must be present in every table, table order is semantically significant, and 'direction' is the end of the score the hypothesis predicts. These are genuine usage constraints layered on top of the documented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It opens with a concrete verb+resource: 'Test a hypothesis that a gene drives a phenotype,' and the POPPER falsification framing gives it a distinct identity from neighbors like validate_gene_trait. It does not name a sibling to differentiate from, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the method description ('the way POPPER does'), with no explicit when-to-use, when-not-to-use, or named alternative such as validate_gene_trait. An agent can infer this is for gene-to-phenotype hypothesis testing with per-table test data, but must supply the selection logic itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_tree_incongruenceA
Read-only
Inspect

Ask whether some loci of a multi-locus alignment have a different history from the rest, by the incongruence length difference test (Farris et al. 1994). Each locus is one aligned FASTA file (or a set of wired alignment rows) over the same taxa, named alike in every file. D is the extra parsimony steps one shared tree costs over each locus's own tree; the null deals the same columns into parts of the same sizes at random. One global test over every locus, and one per locus against all the others combined, with the false discovery rate controlled across loci. A locus that recombined or was transferred costs steps when forced onto the others' tree, but so does a locus evolving at a different rate (Darlu & Lecointre 2002), so a call is a candidate for a tree comparison, never a recombination call. Lengths are NNI parsimony searches from each alignment's own neighbour-joining tree. Cost: a run is 1 + k + k·n + k·(1 + 2n) searches for k loci and n permutations, and a search grows fast with taxa: the default 99 permutations over seven Neisseria MLST loci took 23 s on 12 strains, 48 s on 16 and 122 s on 20, and one search of the 62-strain concatenation takes about 8 s, so 62 strains is hours. Each file is one locus; records wired with no file are grouped by the part of their name before ·.

NameRequiredDescriptionDefault
lociYesthe loci: one aligned FASTA file per locus (its records are the taxa), or library document names. Every file must name the same taxa.
seedNoseed for the column deals. Each permutation draws from its own stream, so one can be re-run alone. Advanced.
alphaNofalse discovery rate at which a locus is called.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
correctionNoBenjamini–Hochberg (independent or positively dependent tests) or Benjamini–Yekutieli (any dependence; less power). Values: BH (Benjamini–Hochberg), BY (Benjamini–Yekutieli).BH
permutationsNorandom deals of the columns per test. The smallest p is 1 / (permutations + 1), which bounds how small a corrected q can get.

Output Schema

NameRequiredDescription
lociYesper locus: its length, the rest's, D, the permutations' mean D, p, q and whether it is called
calledYesthe loci called at q ≤ alpha
globalYesthe test over every locus at once: D, its null, p
resultYesthe full result
nullModelYesthe null and the search, stated with every run

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the read-only, non-destructive, closed-world profile, and the description goes well beyond them: it defines the statistic D, the permutation null, the k·(1+2n) search cost, the NNI search starting point (each alignment's neighbour-joining tree), and explicitly warns that rate heterogeneity confounds recombination signals (Darlu & Lecointre 2002). That is exactly the interpretive context an agent needs and cannot get 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph, front-loaded with purpose, then data model, statistic, test design, caveat, cost, and file-grouping rule. Nearly every sentence carries distinct information, though the runtime anecdotes (23 s / 48 s / 122 s on Neisseria MLST) are somewhat verbose for the point they make.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and the 100% schema coverage plus read-only annotations leave only interpretation and cost to cover — both are handled thoroughly, including input shape, statistical caveats, and scaling limits. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the `loci` data model (one aligned FASTA per locus, shared taxa names, wired records grouped by the part of the name before ' · ') and ties the cost to `permutations` and locus count, deepening how those parameters drive both semantics and runtime.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource — testing whether loci of a multi-locus alignment have incongruent histories — and pins the exact method (incongruence length difference / Farris et al. 1994). The clause 'a call is a candidate for a tree comparison, never a recombination call' explicitly separates its output from the recombination/mutation framing of the sibling tool `recombine`, so an agent can place it precisely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear situational context: it explains the two test scopes (one global, one per-locus against all others with FDR control) and the cost profile (default 99 permutations, search count formula, concrete runtime scaling with taxa), which tells an agent when the tool is affordable. It stops short of naming alternatives such as `compare_trees` or `discover_gene_tree_discordance`, so there is no explicit when-not-to-use routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domesticate_partAInspect

Silently recode the internal Type-IIS sites inside a part's coding sequence so the part can be used in a Golden Gate assembly — same protein, no recognition site. Only occurrences the given CDS covers can be fixed this way; any outside it are reported untouched rather than skipped quietly, because a site in a promoter needs a different answer.

NameRequiredDescriptionDefault
tableNothe codon-usage table to guide the synonymous choice, BY NAME, as the Codon Usage panel lists it. This is the way to pass a table: it resolves against the tables loaded in this project, so the numbers come from one someone built or fetched. Leave unset and the active table is used.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNothe Type-IIS enzyme whose sites must go.BsaI
cds_endYes0-based end of the coding sequence (exclusive).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe part to domesticate — wire a record, name a library document, or leave unset to use the open record.
cds_startYes0-based start of the coding sequence within the part.
table_tsvNoONLY for a table you are pasting yourself, measured elsewhere — prefer `table`, which names one this project already has. Do NOT write a table out from memory: codon frequencies are measured data, and a typed one is indistinguishable from a real one in the result. TSV: codon<TAB>count. Advanced.
cds_strandNo1 for the top strand, -1 for the bottom. Values: 1 (Top strand), -1 (Bottom strand).

Output Schema

NameRequiredDescription
fixesYesone line per synonymous swap, as the engine logs it
sequenceYesthe part with every reachable internal site recoded
fixedCountYeshow many internal occurrences were actually fixed
outsideCdsYesinternal sites the CDS does NOT cover — left untouched, and yours to solve another way

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, destructiveHint=false) tell the agent this writes but is non-destructive; the description adds meaningful context the annotations don't carry: the change is silent (same protein), only CDS-covered occurrences are fixed, and out-of-range sites are reported untouched rather than quietly skipped. It stops short of saying whether the record is mutated in place or a new sequence is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and result, then the scope caveat. No filler or restatement of the name; every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter mutating tool with an output schema (so return values needn't be described), the description covers what is changed, what is preserved, and the key limitation. Only the in-place-versus-new-sequence behavior is left unstated, a minor gap given the schema richness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all nine parameters, so the baseline is 3. The description reinforces the meaning of the CDS bounds ('only occurrences the given CDS covers') and the enzyme scope (Type-IIS), but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (recode/domesticate) and resource (internal Type-IIS sites within a part's coding sequence), plus the outcome (Golden Gate compatibility, silent/same protein). It implicitly scopes itself apart from broader restriction-site tools by limiting work to the CDS, but it never names a sibling such as scrub_restriction_sites or check_golden_gate_parts to route the agent explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'so the part can be used in a Golden Gate assembly' implies the context, and the boundary about sites outside the CDS needing 'a different answer' hints at scope limits, but there is no explicit when-to-use versus when-to-use-something-else guidance. The agent must infer which sibling handles non-CDS or non-Type-IIS cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dot_plotA
Read-only
Inspect

Self-similarity or pairwise comparison of the subject as a dot plot — repeats, inversions and shared regions. Three real engines: exact k-mer (FlexiDot/dottup), windowed identity (seqinr) and windowed substitution-matrix scoring (EMBOSS dotmatcher), which answer different questions.

NameRequiredDescriptionDefault
stepNoresidues between window starts (seqinr `wstep`). 1 compares every position. Only applies when engine is window. Advanced.
otherNothe sequence to compare against — wire a record or name a library document; leave unset for self-vs-self.
shiftNophase offset applied to the second sequence's windows (seqinr `shift`). Only applies when engine is window. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
dedupeNodrop the duplicate runs dotmatcher's two passes leave on the shared diagonal. Off matches upstream; a caller that COUNTS runs wants it on. Only applies when engine is matrix. Advanced.
engineNoexact k-mer (blind to diverged repeats) · windowed identity · matrix-scored windows (the only one that grades a substitution). Values: word (Exact k-mer (dottup)), window (Windowed identity (seqinr)), matrix (Substitution matrix (dotmatcher)).word
matrixNowhich substitution matrix scores the windows. Unset picks EDNAFULL for nucleotide and EBLOSUM62 for protein, as EMBOSS dotmatcher does. Values: EDNAFULL (EDNAFULL (nucleotide)), EBLOSUM62 (EBLOSUM62 (protein)). Only applies when engine is matrix. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_cellsNorefuse rather than compute past this many window comparisons. A ceiling, not a target: raise it for a large pair. Only applies when engine is window. Advanced.
thresholdNoscore a window must reach (EMBOSS default 23). Only applies when engine is matrix. Advanced.
word_sizeNok for the k-mer engine, or the window length for the other two. In bp.
nucleotideNonucleotide rather than protein. Advanced.
matrix_textNoa custom scoring matrix in EMBOSS/NCBI format, overriding `matrix`. Only applies when engine is matrix. Advanced.
min_matchesNopositions inside the window that must agree for it to be marked (seqinr `nmatch`). At 1 almost every window qualifies; raise it toward the window length to demand real identity. Only applies when engine is window.
best_path_onlyNoreduce forward segments to a non-overlapping best path (EMBOSS dotpath). Only applies when engine is word. Advanced.
convert_wobblesNoexpand IUPAC ambiguity codes so a wobble matches what it stands for (FlexiDot). Only applies when engine is word. Advanced.
reverse_complementNoalso plot matches against the reverse complement (k-mer engine). Only applies when engine is word.
max_unknown_percentNopercentage of a k-mer allowed to be N (or X for protein) before it is skipped. In %. Only applies when engine is word. Advanced.

Output Schema

NameRequiredDescription
plotYesthe full result — segments or points, plus axis lengths
statsYeslongest runs, run counts and per-sequence coverage
coverageYesfraction of the subject covered by at least one forward match (0–1)
longestForwardYesresidues on the longest uninterrupted forward run

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. Beyond that, the description explains the distinct behavioral character of each engine (e.g., exact k-mer is blind to diverged repeats, matrix scoring grades substitutions), which adds meaningful context about what the computation actually reveals.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tightly written sentences with no filler. It front-loads the purpose and then gives the engine breakdown, making it easy for an agent to parse before drilling into the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 18 optional parameters, nested objects, and an output schema, the description supplies a clear high-level framing and enough engine context to orient an agent. It does not need to explain return values because an output schema exists, though it could be slightly more explicit about when to prefer each engine.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema itself already documents all 18 parameters in detail. The description does not add syntax, format, or default guidance beyond what the schema provides; it only repeats the engine choice at a high level. A baseline 3 is appropriate when structured fields carry the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool produces a dot plot for self-similarity or pairwise comparison and names the biological features it reveals (repeats, inversions, shared regions). It is a specific purpose for a visualization tool, but it does not explicitly distinguish itself from the sibling dot_plot_grid or 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening phrase establishes the use case (self-similarity or pairwise comparison) and the description notes that the three engines answer different questions, which implies engine choice. However, it does not explicitly say when to choose this tool over sibling alternatives such as dot_plot_grid, and it provides no exclusions or preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dot_plot_gridA
Read-only
Inspect

All-against-all dot plot over a sequence SET — EMBOSS polydot. Every ordered pair is plotted with the exact k-mer engine and laid out as an N×N grid, so shared regions, repeats and inversions across a whole family are visible in one picture. Answers a different question from dot_plot, which compares exactly two: this one ranks which members share material and how much. Wire many upstream record/sequence outputs into sequences, or name library documents.

NameRequiredDescriptionDefault
gapNoresidues of blank space drawn between panels in the composite layout (EMBOSS default 10). Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequencesYesthe set to compare all against all — wire several upstream outputs here, or list library document names/ids.
word_sizeNok. EMBOSS polydot's default is 6, which is smaller than dottup's because a grid of short panels needs a shorter word to show anything. In bp.
nucleotideNonucleotide rather than protein. Advanced.
max_residuesNorefuse when the set's total residue count exceeds this. In bp. Advanced.
max_sequencesNorefuse a set larger than this rather than starting N² comparisons. Advanced.
best_path_onlyNoreduce each panel's forward runs to a non-overlapping best path (EMBOSS dotpath). Advanced.
convert_wobblesNoexpand IUPAC ambiguity codes so a wobble matches what it stands for. Advanced.
include_subjectNoalso include the node's subject (the open or wired record) as a member of the set.
reverse_complementNoplot each pair against the reverse complement too. Not an EMBOSS capability — ours, so an inversion between two members is visible.
max_unknown_percentNopercentage of a k-mer allowed to be N (or X for protein) before it is skipped. In %. Advanced.

Output Schema

NameRequiredDescription
gridYesthe full result — every panel's runs plus its offset in the composite coordinate space
summaryYesEMBOSS's per-sequence table — name, length, and the matches drawn in that sequence's whole column
sequencesYesthe set as plotted, in grid order, with each member's length
memberCountYesmembers in the set (the grid is this squared)
sharingPairsYesoff-diagonal panels carrying at least one shared word — how connected the set is, the leading diagonal excluded because a member always matches itself

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the all-ordered-pair N×N layout, that it ranks which members share material, and that reverse-complement plotting is a non-EMBOSS extension for spotting inversions. It does not restate the refusal thresholds for oversized sets, which live in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action before the sibling differentiation and the input guidance. Every sentence contributes, though the third sentence's wiring hint overlaps with the schema and could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and annotations plus 100% schema coverage carry the parameter and safety detail. The description supplies the remaining needed context: what a grid comparison is for and why it differs from the pairwise sibling. Complete enough for a 13-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 13 parameters including `sequences`, `word_size`, and the guard rails. The description's guidance on `sequences` ('wire many upstream record/sequence outputs, or name library documents') largely repeats the schema text, adding little beyond it. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (all-against-all dot plot), the resource (a sequence SET), the underlying engine (EMBOSS polydot), and the output shape (N×N grid). It explicitly distinguishes itself from sibling `dot_plot` by scope: this one compares a whole family, that one exactly two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (`dot_plot`) and the condition that selects this tool over it ('Answers a different question from dot_plot, which compares exactly two'). It also tells the agent how to populate the required `sequences` argument, either by wiring upstream outputs or naming library documents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draw_alignmentA
Read-only
Inspect

Draw a block of an alignment as an SVG figure: the rows named, the residues shaded by how much of their column agrees with them, the column numbers over the block and Easel's Clustal conservation line under it. Wire alignedSequences from align_sequences. Name the window around whatever you are asking about — a variable site, a motif, a gap — because a 2,000-column alignment drawn at once shows nothing.

NameRequiredDescriptionDefault
fromNofirst column drawn, 1-based and inclusive. Clamped into the alignment.
rowsYesthe ALIGNED rows, each {name, aligned}; every row must already be the same length. Wire `alignedSequences` from align_sequences.
rulerNoprint the column numbers over the block. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
schemeNoidentity shades a residue by how much of its column agrees with it, which works for any alphabet; nucleotide paints QUEEN's own base colours and is IGNORED over protein rows, which the answer's `scheme` then says. Values: identity (Column identity), nucleotide (Base colours).identity
columnsNohow many columns to draw. Past about 200 the letters are narrower than the strokes that make them.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cell_widthNowidth of one column's cell. In px. Advanced.
name_charsNohow many characters of a row's name to print; a longer one is elided in the middle, keeping the tail where two rows of a family differ. Advanced.
row_heightNoheight of one row. In px. Advanced.
conservationNoprint the conservation line under the block.

Output Schema

NameRequiredDescription
svgYesthe alignment block as an SVG figure
rowsYesrows drawn
widthYesfigure width in px
heightYesfigure height in px
schemeYesthe scheme ACTUALLY used, which is `identity` whenever `nucleotide` was asked for over protein rows
columnsYescolumns in the WHOLE alignment, so the window can be read against it
alphabetYesthe alphabet the conservation line was computed for — Easel marks the strong and weak groups for protein only
lastColumnYeslast column drawn, 1-based inclusive
firstColumnYesfirst column drawn, 1-based inclusive, AFTER clamping
meanIdentityYesmean per-column identity over the window drawn, 0-1 — the window's, not the alignment's
conservedColumnsYescolumns in the window every row agrees on and none gaps — the `*` marks

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and an output schema exists, so the safety and return-shape burden is light. The description still adds real behavioral context the annotations cannot: that the output is an SVG figure whose shading encodes column agreement, that nucleotide colouring is ignored over protein rows, and that readability degrades past ~200 columns. It does not discuss performance limits or how the SVG is delivered, but that is minor given 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: what is drawn, what to feed it, and how to choose the window. The key constraint about large alignments is front-loaded into the final sentence as the action-guiding point rather than buried. Nothing is repeated from the schema except a short wiring reminder that serves the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema handling return values and annotations handling safety, the remaining gaps are data flow and figure legibility — and the description covers both (align_sequences source, window-sizing advice, shading semantics). An agent can decide to call this tool and supply correct inputs from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by telling the agent where `rows` comes from ('Wire alignedSequences from align_sequences') — a cross-tool data-flow fact invisible in the schema — and by framing the practical window-sizing constraint that governs `from`/`columns` choices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Draw a block of an alignment as an SVG figure') and then enumerates exactly what the figure contains: named rows, identity-shaded residues, column numbers, and a Clustal conservation line. That level of output detail separates it cleanly from alignment_agreement (metrics) and alignment_window (window selection) without either being named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete usage rule — 'Name the window around whatever you are asking about — a variable site, a motif, a gap' — and warns that drawing a 2,000-column alignment at once shows nothing. It also names the upstream prerequisite (wire alignedSequences from align_sequences). It stops short of naming sibling alternatives such as alignment_window or add_notebook_figure, so there is no explicit when-not-to-use routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draw_gelA
Read-only
Inspect

Run an agarose gel and photograph it: every lane's fragments migrated by the validated pydna model, drawn as a gel-doc image with the marker ladder's bp marks and each lane's name. The same plate the gel panels draw, so the figure and the rail put every fragment in the same place. Wire fragments from a digest or lengths from an assembly into lanes. A fragment the calibrating curve cannot place is COUNTED in offScale, never drawn at the well.

NameRequiredDescriptionDefault
lanesYesthe lanes, each {name, lengths: [bp, …]}. The marker lane is added for you — `ladder` chooses it.
stainNothe dye the plate was stained with; its published emission maximum is the colour the bands are drawn in. Values: etbr (Ethidium bromide), sybr-safe (SYBR Safe), sybr-gold (SYBR Gold), gelred (GelRed).etbr
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
labelsNoprint the ladder's readable bp marks, each lane's number above its well and a legend naming it. Off gives the bare plate, for a figure that captions itself.
ladderNothe MW marker in the reference lane, which is also the curve every lane's migration is read off unless `agarose_percent` is set. Values: generuler_1kb_plus (GeneRuler 1 kb Plus (75–20,000)), hi_lo (Hi-Lo DNA Marker (50–10,000)), generuler_1kb (GeneRuler 1 kb (250–10,000)), generuler_100bp (GeneRuler 100 bp (100–3,000)), generuler_100bp_plus (GeneRuler 100 bp Plus (100–3,000)), thermo_1kb_plus (Thermo 1 Kb Plus (100–15,000)), neb_1kb (NEB 1 kb (500–10,000)), neb_100bp (NEB 100 bp (100–1,517)), lambda_hindiii (Lambda DNA / HindIII (125–23,130)), penn_state (PennState (500–10,000)).generuler_1kb_plus
captionNothe line under the plate naming the curve that positioned the bands and what their brightness is relative to. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
dna_formNotopology of the sample DNA: supercoiled and nicked circles do not migrate where a linear fragment of the same length does. Only the Helling-Goodman-Boyer law uses it. Values: linear (Linear), supercoiled (Supercoiled), nicked (Nicked), relaxed (Relaxed). Only applies when agarose_percent is set. Advanced.linear
exposureNoWhole plate: brightness against the brightest band on the plate (a lightly loaded lane, the ladder included, can draw almost black); Per lane: brightness against each lane's own brightest band (brightness can no longer be compared between lanes). Values: plate (Whole plate), lane (Per lane).plate
lane_widthNohow wide each lane is drawn. In px. Advanced.
mobility_modelNowhich published mobility law the agarose % is applied through. Ignored unless `agarose_percent` is set. Values: helling-goodman-boyer (Helling-Goodman-Boyer), rill-van-winkle (Rill / Van Winkle). Only applies when agarose_percent is set. Advanced.helling-goodman-boyer
agarose_percentNothe gel's agarose (% w/v). Set it and migration comes from a concentration law instead of the ladder's own spline, so the gel responds to the percentage the way a real one does; leave it unset for the ladder-calibrated placement. In %.

Output Schema

NameRequiredDescription
svgYesthe gel as an SVG figure, carrying the photographed plate and its labels
widthYesfigure width in px
heightYesfigure height in px
ladderYesthe marker in the reference lane
offScaleYesfragments the curve could not place, so they are NOT on the picture — check this before reading a lane as complete
bandCountYesbands with a position on this plate — what the picture shows
laneCountYessample lanes drawn, the marker lane excluded
calibratedByYesthe (bp, Rf) curve that positioned every lane

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is read-only, non-destructive, and closed-world, so the description does not need to repeat safety basics. It adds meaningful behavioral detail beyond annotations: migration uses the validated pydna model, the output matches the gel panels, and fragments that cannot be placed are counted in `offScale` rather than drawn at the well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary action and output, then adds only targeted details about consistency with gel panels, input wiring, and off-scale fragment handling. There is no redundant restatement of the tool name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with full schema descriptions, rich annotations, and an output schema, the description covers the core purpose, input source expectations, rendering consistency, and important edge-case behavior. An agent has enough context to invoke it correctly without needing the description to explain every advanced rendering parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the detailed meaning of `lanes`, `ladder`, `agarose_percent`, and the advanced rendering parameters. The description adds a useful mapping by explaining that digest `fragments` or assembly `lengths` should feed into `lanes`, but it does not add substantive semantics for most other parameters beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb/resource: it runs/draws an agarose gel and produces a gel-doc image with migrated fragments, ladder marks, and lane names. It distinguishes the output from a raw digest by emphasizing the rendered plate and validated pydna migration, but it does not explicitly differentiate itself from sibling gel tools such as run_gel_lane, run_gel_plate, or add_notebook_figure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful usage context by saying to wire `fragments` from a digest or `lengths` from an assembly into `lanes`. However, it does not state when to choose draw_gel over the sibling gel-rendering tools or when not to use it, leaving the alternative-selection guidance implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draw_traceA
Read-only
Inspect

Draw a window of a Sanger read as an SVG figure: the four dye traces over their called bases, the per-base Phred bars and a base ruler. The same geometry the Chromatogram tab draws with, so the figure and the tab put every peak in the same place. Name the window around whatever you are asking about — a mutation site, a trim bound, an ambiguous call — because a whole 1,000-base read drawn at once shows nothing.

NameRequiredDescriptionDefault
fromNofirst base drawn, 1-based and inclusive. Clamped into the read.
basesNohow many bases to draw. Keep it to a window you can read: past about 120 the peaks are narrower than the letters over them.
widthNofigure width. It SETS the per-base zoom for the window asked for, never crops it. In px.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
paletteNowhich ink each dye is drawn in. `print` is the default here because the figure travels outside the app and onto white; `cvd` is the color-vision-deficiency-safe set. Values: classic (Classic (ABI)), cvd (Color-blind safe), print (Print (on white)).print
qualityNoprint the per-base Phred bars. A file with no confidence (many SCFs) draws none whatever this says.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace file to draw: its name (`read_F.ab1`) or its project file id. A file id is project-specific, so a template ships this unset.
bases_rowNoprint the called bases between the ruler and the peaks. Advanced.
trace_heightNoheight of the peak band, under the ruler, quality and base rows. In px. Advanced.

Output Schema

NameRequiredDescription
svgYesthe trace window as an SVG figure
readYesthe read drawn
widthYesfigure width in px
heightYesfigure height in px
lastBaseYeslast base drawn, 1-based inclusive
sequenceYesthe calls in the window drawn, so the picture and the string cannot disagree
firstBaseYesfirst base drawn, 1-based inclusive, AFTER clamping into the read
hasQualityYeswhether this file carries per-base confidence at all
meanQualityYesmean Phred over the window drawn, or 0 when the file carries no confidence — read `hasQuality` beside it rather than reading 0 as bad calls

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, non-destructive, closed-world behavior, so the safety profile is covered. Beyond that, the description adds substantive context: the figure uses the same geometry as the Chromatogram tab, width sets zoom and never crops, `print` is the default palette because the figure travels outside the app, and confidence bars are omitted when the file has no quality data. These are exactly the behavioral traits an agent needs beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and output format, followed by a useful geometry detail and a practical window-sizing directive. Every sentence earns its place with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values. With annotations covering safety and schema covering all parameters, the description supplies the remaining context an agent needs: what is drawn, how window sizing works, and why to scope the view. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all ten parameters carry their own detailed docs (defaults, ranges, units, clamping semantics). The description does not add parameter-specific syntax or default information beyond the schema; its window advice indirectly relates to `from` and `bases` but does not name them. The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Draw), resource (a window of a Sanger read), and output format (SVG figure) in the first clause. It enumerates exactly what the figure contains — dye traces, Phred bars, base ruler — so an agent knows precisely what this tool produces. The resource is unambiguous against siblings like draw_alignment or draw_gel, which target different data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage context: name the window around a mutation site, trim bound, or ambiguous call, and explains why a whole read is useless. This tells the agent when the tool is appropriate. It stops short of naming explicit alternatives or exclusions (e.g., export_trace, trace_raw_signal), so it is strong context but not a full when/when-not guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

draw_treeA
Read-only
Inspect

Draw a tree as an SVG figure — rectangular, slanted, circular or unrooted, as a phylogram or a cladogram, with tip names, branch support and a scale bar. The same layout the phylogeny panel draws with, so the figure and the panel place every node identically. Wire newick from build_tree or edit_tree.

NameRequiredDescriptionDefault
widthNofigure width. In px.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
heightNofigure height. In px.
layoutNodrawing style; `unrooted` is the only honest one for a tree whose method inferred no root, because a rectangular drawing of it implies a root that was never inferred. Values: rectangular (Rectangular), slanted (Slanted), circular (Circular), unrooted (Unrooted).rectangular
newickYesthe tree to draw — wire `newick` from build_tree, or paste one.
supportNoprint each internal branch's support value where it carries one.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
font_sizeNotip-label size. In px. Advanced.
tip_labelsNoprint each tip's name, reserving the gutter they need.
length_unitNowhat the branch lengths MEAN, for the scale bar's caption. A tree read from a file carries no unit, so say what it is rather than letting the bar claim substitutions/site. Advanced.substitutions/site
min_supportNobelow this, a support value is not printed. Only applies when support is true. Advanced.
branch_lengthsNophylogram: horizontal distance IS evolutionary distance. Off draws a cladogram, which shows the topology alone — and then no scale bar is drawn, because the drawing is not to scale.
unrooted_methodNowhich unrooted algorithm places the nodes; equal daylight only rotates subtrees about their nodes, so it preserves every branch length. Only applies when layout is unrooted. Advanced.equal-angle

Output Schema

NameRequiredDescription
svgYesthe figure as an SVG string
widthYesfigure width in px
heightYesfigure height in px
tipCountYestips drawn
pixelsPerUnitYespx per unit of branch length in THIS drawing, or 0 when the drawing is not to scale and no bar was drawn

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds genuinely new context — that the output is an SVG figure and that node placement matches the phylogeny panel exactly, which matters for reproducibility expectations. It does not cover size/pagination or performance on large trees, keeping it below 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero preamble: capability and options first, provenance/consistency second, input source last. Every sentence carries information an agent needs to call it correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, nested _subject/_files objects and an output schema, the description correctly stays high-level and lets structured fields do the detail work. The only gap is that the generic project/record wiring (_files, _subject) is never referenced, which an agent may need to supply for library documents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions are unusually rich (unrooted honesty note, branch_lengths turning off the scale bar, equal-daylight preserving branch lengths), so the baseline is 3. The description adds only the `newick` wiring hint and no additional parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (draw) plus resource (tree) plus output form (SVG figure), and it enumerates the four layouts and the phylogram/cladogram distinction up front. An agent can tell this apart from build_tree (constructs) and export_tree 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Wire `newick` from build_tree or edit_tree" gives a concrete predecessor path and even names the two producing tools, which is exactly the routing an agent needs. It stops short of stating when NOT to use this (e.g. versus export_tree for non-figure output) or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ebi_alignA
Read-only
Inspect

Run a sequence through EMBL-EBI's Job Dispatcher: Clustal Omega, MUSCLE, MAFFT, Kalign, T-Coffee, EMBOSS needle/water/matcher/stretcher, LALIGN, phmmer, hmmscan, PSI-BLAST or Phobius. These are the reference implementations a methods section names, so a local alignment can be checked against the tool the field actually cites. The sequences LEAVE THE MACHINE.

NameRequiredDescriptionDefault
emailNoEBI requires a contact address on every submission (their abuse contact, not a login). Left empty, the one saved in any EMBL-EBI panel is used.
stypeNoquery alphabet, where the service takes one. Values: dna (nucleotide), protein (protein).dna
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
serviceNowhich EBI service to run. Values: clustalo (Clustal Omega — HMM-profile progressive MSA), muscle (MUSCLE — Iterative refinement MSA), mafft (MAFFT — FFT-based progressive/iterative MSA), kalign (Kalign — Wu-Manber approximate-string-matching MSA), tcoffee (T-Coffee — Consistency-based MSA), emboss_needle (EMBOSS needle — Needleman–Wunsch GLOBAL pairwise alignment: end-to-end, the whole of both sequences.), emboss_water (EMBOSS water — Smith–Waterman LOCAL pairwise alignment: the best-matching subregion, ignoring the rest.), emboss_matcher (EMBOSS matcher — Waterman–Eggert local pairwise alignment, like water, but it can report several alternative non-overlapping local alignments instead of only the single best one.), emboss_stretcher (EMBOSS stretcher — Myers–Miller GLOBAL pairwise alignment in linear space: the same answer needle gives, on sequence pairs too long for needle to hold in memory.), lalign (LALIGN — Huang & Miller), hmmer3_phmmer (HMMER phmmer — Profile HMM search of one protein against a protein database), hmmer3_hmmscan (HMMER hmmscan — Search ONE protein against a profile-HMM library), psiblast (PSI-BLAST — Position-Specific Iterated BLAST: it builds a profile from the hits of one round and searches again with it, which finds remote homologues plain blastp misses.), phobius (Phobius — Combined signal-peptide and transmembrane-topology prediction: the two are modeled together, so a signal peptide is not miscalled as a TM helix.), radar (RADAR — Rapid Automatic Detection and Alignment of Repeats: finds a protein’s INTERNAL repeats and aligns the copies against each other, without a library to match them to.), pratt (Pratt — Pattern discovery).clustalo
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequencesNothe sequences to align. Wire records or sequence outputs, or paste FASTA. Multiple-alignment services take all of them; a pairwise service takes exactly two.
parametersNoevery other parameter the chosen service advertises, one `id=value` per line, using its own ids (matrix, gapopen, gapext, format, iterations…). Left empty each keeps the service's default. An id the service does not advertise is refused by name rather than dropped, and so is a value outside the list it publishes for this alphabet.
include_subjectNoinclude the record this step is running on as the first sequence.

Output Schema

NameRequiredDescription
rawYesthe native text the service returned, for download
hitsYesthe PSI-BLAST hit table, in the same shape blast_search hands downstream
rowsYesthe aligned rows as plain strings, ready to wire into build_tree or a scorer
jobIdYesthe dispatcher job id: what a methods section cites and what re-fetches this exact result
localYesLALIGN’s non-overlapping local alignments, each with its own score, E-value and spans
newickYesthe service's own guide tree, ready for the Phylogenetics tool
repeatsYesRADAR’s internal repeat families, each copy with its residue span and its two scores
identityYesthe percent-identity matrix the service computed
pairwiseYesthe pairwise report (needle/water/matcher/stretcher)
patternsYesPratt’s discovered patterns in PROSITE notation, each with where it matched in every sequence
topologyYesthe Phobius signal-peptide and transmembrane features, with their spans
alignmentYesthe aligned sequences (multiple-alignment services)
profileHitsYesthe HMMER hits (phmmer, hmmscan) with their domains and inclusion thresholds

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/openWorldHint already declared, the description still adds a materially important disclosure that annotations only imply: 'The sequences LEAVE THE MACHINE' — a data-egress/privacy warning that should gate use on confidential sequences. It does not, however, cover expected latency or whether EBI jobs are submitted asynchronously and polled, which matters for a remote dispatcher.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded verb and the critical egress warning is emphasized in its own short sentence. The long service enumeration partly duplicates the schema enum, but it is scannable and serves the purpose of showing scope at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, schema coverage is complete, and annotations cover the safety profile, so the description only needs purpose, usage and the egress caveat — all present. Nothing an agent needs to select or call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the service enum already carries full per-tool definitions (global vs local, profile search, etc.), so the schema does the heavy lifting. The description's contribution is framing, not parameter semantics; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (run a sequence) plus an explicit, named resource set (EMBL-EBI Job Dispatcher: Clustal Omega, MUSCLE, MAFFT, EMBOSS needle/water, PSI-BLAST, Phobius, etc.). It also differentiates from siblings like align_sequences by stating the value proposition: these are the reference implementations a methods section cites, so a local result can be checked against them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use case ('so a local alignment can be checked against the tool the field actually cites'), which tells the agent this is for reproducing/citing published methods rather than routine local alignment. It does not name a specific alternative sibling or state when not to use it, so it stops short of explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enumerate_protonation_statesA
Read-only
Inspect

Enumerate a small molecule's protonation states across a pH window with Dimorphite-DL (Ropp et al. 2019): each ionisable group it recognizes (substructures with pKa means and spreads taken from measured pKa values) is kept protonated, deprotonated or both, and every combination is returned as SMILES. Reproduces Dimorphite-DL 2.1.0, including that it neutralizes charged groups first and keeps only the part it neutralized.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
ph_maxNoupper end of the pH window.
ph_minNolower end of the pH window.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculeYesthe structure: SMILES or a molfile.
precisionNohow many standard deviations of each group's pKa widen its window, 0–10.
max_variantsNostop enumerating past this many states (later groups are then not visited).

Output Schema

NameRequiredDescription
sitesYesper ionisable site: Dimorphite name, SMARTS, each pKa (mean, stdev, state) and its atoms on the input (0-based, implicit hydrogens), or null when they do not map
cappedYestrue when the enumeration stopped at max_variants
statesYesevery protonation state as canonical SMILES, sorted
summaryYesthe enumeration in words, generated from this run, with its caveats

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the read-only, non-destructive safety profile, but the description adds real behavioral context: each group is kept protonated/deprotonated/both and every combination returned, the pKa values are measured-derived, and there is a disclosed quirk that charged groups are neutralized first and only the neutralized part kept. This is meaningful disclosure beyond the annotations, though the max_variants truncation behavior is left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and algorithm, and no filler. The parenthetical citation and the 'Reproduces Dimorphite-DL 2.1.0' clause are slightly redundant but defensible as provenance for a reimplementation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description is complete for the chemistry behavior. The only gaps are the absence of routing guidance versus sibling enumeration tools and the unexplained project/record scaffolding parameters, which the schema covers but the description never ties together.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so ph_min/ph_max/precision/max_variants are already fully documented in the schema. The description explains the conceptual model behind precision (pKa means and spreads) and the pH window, but adds no new syntax or format detail beyond the structured fields, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource (enumerate protonation states), the algorithm used (Dimorphite-DL), the scope (across a pH window), and the return format (SMILES). It is precise enough that an agent can distinguish it from nearby chemistry tools like canonical_tautomer or generate_conformers, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent can infer it is for generating pH-dependent protomers of a small molecule, but there is no explicit when-to-use, when-not-to-use, or named alternative. For a chemistry enumeration tool sitting among tautomer/conformer siblings, that routing guidance would be valuable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enumerate_reactionA
Read-only
Inspect

Run a reaction SMARTS over lists of reactants, every combination, with RDKit's reaction engine: one list per reactant template, in template order. Pick one of 94 library reactions (the 58 robust organic reactions of Hartenfeller et al. 2011 and 36 click-chemistry reactions, as AutoGrow4 encodes them) or pass your own SMARTS. Each product is sanitised; a product set is kept only when every product in it sanitises. Indices are 0-based.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
smartsNoyour own reaction SMARTS, reactants>>products. Only applies when template is custom.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
templateNothe library reaction to run, or custom for your own SMARTS.83_Schotten_Baumann_amide
reactantsYesone list of SMILES or molfiles per reactant template, in template order.
max_combinationsNostop after this many reactant combinations.

Output Schema

NameRequiredDescription
cappedYestrue when the run stopped at max_combinations
summaryYesthe run in words: products, combinations, and what was dropped or capped
productsYesevery product set as SMILES with the 0-based index of each reactant that made it

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds non-obvious behavior beyond that: every product is sanitised, a product set is retained only if all its products sanitise, and indices are 0-based.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then the template choice, then the sanitisation rule and index convention. Dense but every sentence carries distinct operational information; the RDKit/AutoGrow4 attributions are slightly verbose but add provenance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, return values need no explanation. For a combinatorial enumeration tool with nested arrays, the description covers the input structure, template options, sanitisation semantics and index base, leaving nothing essential unclear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the reactants array maps one list per reactant template in template order (critical for a nested array), and the template parameter supports 'custom' paired with an own SMARTS string. It clarifies the index convention that the schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Run a reaction SMARTS over lists of reactants, every combination') and the engine used (RDKit). It is clearly distinguishable from related siblings like map_reaction_atoms or screen_molecule_library, which do not enumerate combinatorial reaction products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains how to use it – pick one of 94 library reactions or supply your own SMARTS, and supply one list per reactant template in template order. It gives clear operating context but does not name alternative tools or state when this tool should be avoided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enzyme_collectionA
Read-only
Inspect

Resolve one of your saved enzyme collections to the enzyme names in it, so a later step can scan, digest or design with 'my Golden Gate set' by name instead of whatever happens to be selected. Names the collection, says which of its enzymes the cut catalog can resolve and which it cannot, and — when a record is open — how many times each one cuts it. Left unnamed it answers for the collection that is currently active, and says that is what it did.

NameRequiredDescriptionDefault
nameNothe collection to resolve, by the name it has in the Enzyme Collections panel. Left unset, the active collection is used; with none active, the whole catalog is in scope and this says so rather than returning an empty set.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many enzymes resolved — branch on this rather than counting the array
censusYeswhat this collection does to the open record, counted once: bases scanned, whether the scan wrapped the origin, names asked and resolved, total cuts, and how many enzymes cut it once, twice or more. Absent when nothing is open. This is the collection panel's own reading, so the sentence the door returns and the numbers it returns cannot disagree
cuttingYesper enzyme, how many times it cuts the OPEN record — absent when nothing is open, because a cut count with no molecule behind it is a number nobody asked for
enzymesYesthe enzyme names in the collection, ready to wire into any tool's `enzymes` parameter — the resolvable ones only, so a downstream digest never refuses on a name this step already knew was unusable
availableYesevery collection you have, by name, with its size and whether it is the active one — so a run that named the wrong collection can say what the right names were
collectionYesthe collection this answered for, or 'the whole catalog' when nothing is scoped
unresolvedYesnames in the collection that the bundled cut catalog does not carry, usually a custom enzyme defined in the panel or a supplier spelling. Reported rather than dropped: a set that silently shrinks is the reason a digest comes back short
singleCuttersYesthe enzymes cutting the open record exactly once — the ones a linearization or a directional clone can use. Empty when nothing is open

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, non-destructive, closed-world behavior, and the description adds genuinely new context: which enzymes the catalog can and cannot resolve, that cut counts appear only when a record is open, and that an unnamed call falls back to the active collection and reports having done so. It does not cover failure behavior for an unknown collection name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the core action, with no filler. The closing clause about saying which collection it used is slightly wordy but carries real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it still covers the important edge cases: unnamed name, no active collection, and record-open cut counts. Only error behavior for a nonexistent collection is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, including the name fallback and the _subject record-shape guidance. The description restates the default-collection behavior and adds the notion that record context affects the cut counts, but gives no additional syntax or selection detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (resolve a saved enzyme collection to its enzyme names) plus what the result contains: catalog-resolvable vs unresolvable enzymes and per-enzyme cut counts when a record is open. This clearly separates it from save_enzyme_collection, enzyme_cut_counts and get_selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete usage context: so a later scan, digest or design step can refer to 'my Golden Gate set' by name rather than the incidental current selection. It does not explicitly name alternatives (save_enzyme_collection, enzyme_cut_counts) or state when not to use it, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enzyme_cut_countsC
Read-only
Inspect

Per-enzyme cut counts on the open plasmid (the EcoRI² superscript-badge numbers).

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesenzyme names to scope the scan to — resolved against the bundled cut catalog (REBASE spellings; smaller than the REBASE dossier the editor shows). Left unset, the run uses your active enzyme collection.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
totalYestotal cuts across every enzyme asked about
countsYesenzyme → cut-count map; an enzyme with no sites is present with 0, never omitted
singleYeshow many cut EXACTLY once: the enzymes that linearise this molecule
cuttersYeshow many of the enzymes cut at least once
zero_cuttersYeshow many were scanned for and have no site here

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it operates on the open plasmid and corresponds to the EcoRI² superscript-badge numbers in the editor UI.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded fragment with no wasted words. It is appropriately terse for a simple read-only count tool, though the parenthetical jargon may not be meaningful to an agent without UI context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover safety. However, the description omits usage guidance and sibling differentiation, leaving gaps for an agent deciding between similar restriction-analysis tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters in detail. The description adds no additional parameter meaning beyond implying that counts are per enzyme, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and output type: per-enzyme cut counts on the open plasmid. However, it is a fragment without a clear verb, and it does not distinguish itself from sibling tools such as find_restriction_sites, digest_fragments, or enzyme_collection, leaving the agent to infer the exact operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. The phrase 'on the open plasmid' implies the tool acts on the currently open record, but no alternatives or exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_effect_sizeA
Read-only
Inspect

The effect a power calculation needs, measured from a pilot instead of guessed: two groups of one measurement in a table, standardized as Hedges' g (default), Cohen's d or Glass's Δ with its noncentral-t confidence interval (effectsize 1.0.3, reproduced), and the two-sample t design sized at the estimate and at the interval limit nearest zero. A column can be subtracted row by row first (a reference gene's Ct, giving delta-Ct). Returns the design calculate_power takes: Cohen's d for the t test, the raw difference and SD for t_raw.

NameRequiredDescriptionDefault
ciNothe confidence level of the interval.
groupNothe group compared. Left unset, the second group to appear.
powerNosize the design for this power; leave empty to estimate the effect only.
tableYesthe pilot: a header row, then one row per observation. Tab- or comma-separated.
valueYesthe column holding the measurement.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
groupsNoone group label per data row, in row order, separated by commas, spaces or new lines, when the table has no group column.
pairedNothe two groups are the same subjects measured twice, paired by row order within each group. Only applies when estimator is hedges_g or cohens_d.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
subtractNoa column subtracted from the measurement row by row before anything else: a reference gene's Ct (giving delta-Ct), a baseline.
estimatorNoHedges' g corrects Cohen's d's small-sample bias by the exact J(df); Cohen's d is the uncorrected standardized difference; Glass's Δ standardizes by the reference group's SD alone, for when the treatment changes the spread. Values: hedges_g (Hedges' g), cohens_d (Cohen's d), glass_delta (Glass's Δ).hedges_g
pooled_sdNostandardize by the pooled SD (Student). Off averages the two variances, with Welch's df. Only applies when estimator is hedges_g or cohens_d.
referenceNothe group it is compared against (the control). Left unset, the first group to appear.
sig_levelNoα for the sizing. Advanced.
alternativeNoa two-sided interval, or one bounded on one side. Values: two.sided (Two-sided), less (Less (upper bound only)), greater (Greater (lower bound only)). Advanced.two.sided
group_columnNothe column naming each row's group. Or give `groups`.

Output Schema

NameRequiredDescription
designYeswhat calculate_power takes: the t test's d (`effect`), and the raw `difference` and `sd` for t_raw
groupsYesevery group in the table: n, mean and SD of the measurement
sizingYespwr.t.test's sample size at the estimate and at the limit nearest zero, when power was given
estimateYesthe standardized effect
intervalYesthe confidence interval: level, low, high

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds substantive behavior beyond that: the noncentral-t confidence interval, reproduction of effectsize 1.0.3, the fact that the design is sized at both the estimate and the interval limit nearest zero, and the exact shape of the returned `design`. It does not discuss failure modes or data-quality constraints, which keeps it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose before the mechanics, and no filler. The sentences are long and clause-heavy with em-dash asides, which makes them denser than ideal, but each clause carries information an agent needs (estimators, CI, subtraction, return shape).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter tool with nested objects and an output schema, the description covers the input workflow (table, groups, subtract), the statistical behavior, and the handoff to calculate_power. Because an output schema exists it need not document return fields, and the brief return note is a bonus; the only gap is that no practical preconditions on the pilot data are stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description nevertheless adds real meaning above the schema: it explains the delta-Ct use case for the subtract column ('a reference gene's Ct, giving delta-Ct'), clarifies that the result is the `design` calculate_power takes with Cohen's d for `t` and raw difference/SD for `t_raw`, and frames the estimator choice as bias-correction vs. uncorrected vs. reference-SD standardization.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('The effect a power calculation needs, measured from a pilot instead of guessed') and immediately names the three estimator variants it computes. It also positions itself in the pipeline against the sibling calculate_power by naming the `design` object it returns, so an agent can distinguish it from the power-sizing siblings 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for when this tool is the right one: when an effect size must be measured from pilot data rather than guessed, and it names calculate_power as the downstream consumer. It stops short of an explicit exclusion or a named alternative to use in a different situation, so it is a strong 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_barcodesA
Read-only
Inspect

Write an index set out in the form the next step needs: a CSV or TSV order sheet, FASTA, an IDT bulk-input sheet of the bare tags, an Illumina BCLConvert SampleSheet, or the actual oligos — adapters built on a template, or primers carrying the tag — with the junction warnings that emission produces.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNowhat to write. Values: csv (CSV order sheet), tsv (TSV), fasta (FASTA), idt (IDT bulk input), samplesheet (Illumina SampleSheet), adapters (Adapter oligos), primers (Tagged primers).csv
prefixNoname prefix for the rows (BC001, BC002 …).BC
primerNothe primer the tag is added to. Only applies when format is primers.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
barcodesYesthe index sequences to write out.
adapter_3Nosequence 3' of the tag in the adapter — the TruSeq read-1 primer, as the panel offers. Only applies when format is adapters.ACACTCTTTCCCTACACGACGCTCTTCCGATCT
adapter_5Nosequence 5' of the tag in the adapter — the Illumina P5, as the panel offers. Only applies when format is adapters.AATGATACGGCGACCACCGAGATCTACAC
idt_scaleNoIDT synthesis scale, exactly as IDT writes it (e.g. 25nm, 100nm, 250nm). Asked for rather than defaulted: which options exist depends on oligo length. Only applies when format is idt.
idt_purificationNoIDT purification (e.g. STD, PAGE, HPLC). Check what your scale allows before ordering. Only applies when format is idt.

Output Schema

NameRequiredDescription
textYesthe written file, for the text formats
countYeshow many barcodes were written
oligosYesthe emitted oligos, for the adapter and primer formats — empty for the text formats
warningsYesjunction warnings the emission found — a tag that creates a homopolymer or a restriction site at its junction. Empty for the text formats, which build no junction

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description is free to add context and does: it discloses that emission produces junction warnings and that adapter/oligo formats are built from templates carrying the tag. It does not clarify whether output is written to disk or returned in the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence led by the verb and scope, with the format list nested cleanly. Dense but every clause (formats, oligo types, junction warnings) carries information, and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the rich schema plus annotations carry parameters and safety. The description covers purpose, formats and the warning behavior; the only real gap is the write-vs-return ambiguity for a tool named 'export'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning: it distinguishes the adapter formats (oligos built on a template) from the primer format (tag carried on a primer), which explains the format/primer/adapter_* relationship better than the bare enum does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Write an index set') and enumerates the exact output forms (CSV/TSV order sheet, FASTA, IDT bulk input, BCLConvert SampleSheet, adapters, primers). An agent can tell this is the export/emission step rather than a design step, though it never names sibling tools like design_barcodes or audit_barcodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'in the form the next step needs' implies this is a downstream emission step, and the format enumeration implies which consumer each output serves. But there is no explicit when-to-use/when-not guidance and no named alternative tool, so the routing signal is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_construction_recordA
Read-only
Inspect

Write a construct's recorded build out as a document: a methods section, a step spreadsheet, the full decoded record, the molecule carrying its own history as GenBank qualifiers, the whole strategy as an OpenCloning document, the runnable QUEEN script that rebuilds it, or the build as an SBOL 2 document. This is the Export tab of the History & Provenance panel (the same seven writers), refusing the same formats that source cannot produce.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNowhich document to write. `methods` is the default because it is the panel’s first row and the only one every source can produce; the other six each need something of the record, and asking for one a source cannot carry is refused by name rather than answered with an empty file. Values: methods (Methods (Markdown)), steps_csv (Steps (CSV)), record_json (Full record (JSON)), genbank (GenBank with construction history), opencloning (OpenCloning document (JSON)), queen_script (Reconstruction script (Python)), sbol (SBOL 2 construction record).methods
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNoFile id or name. The focused document when omitted, exactly as the panel.
sbol_syntaxNowhich RDF syntax to write the SBOL record in. SBOL is RDF and the six concrete syntaxes encode ONE graph, so this changes how the document is written down and never what it says. `rdfxml` is the default because it is what the writer composes and what libSBOLj validates; the rest are re-serialised from that exact document. Ignored unless `format` is `sbol`, and saying so is refused rather than silently dropped. Values: rdfxml (RDF/XML), turtle (Turtle), ntriples (N-Triples), nquads (N-Quads), trig (TriG), jsonld (JSON-LD). Only applies when format is sbol.rdfxml

Output Schema

NameRequiredDescription
textYesthe document itself, byte for byte what the panel’s download writes
formatYesthe format actually written: echoed because it is defaulted, not required
sourceYeswhich of the 5 records this was written from: the workbench log, a SnapGene .dna reaction graph, a QUEEN build script, an OpenCloning strategy, or an SBOL 2/3 construction record
syntaxYesthe RDF syntax the SBOL record was written in, echoed because it is defaulted. Empty for every other format, which do not have one
cautionYeswhat the panel warns about after this write, when it warns. Empty is the healthy case: a GenBank whose construct carries no other annotation will not read its own history back, and the file looks perfect either way
filenameYesthe name the panel saves it under, so a pipeline writing several agrees with it
availableYesthe formats THIS record can produce, and for each one it cannot, why: the panel’s own enabled/disabled derivation, so a pipeline can branch on it instead of failing

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it is the same seven writers as the Export panel, and incompatible format/source combinations are refused by name rather than answered with an empty file. That refusal contract is exactly the kind of non-obvious behavior 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and the format set, with the panel/refusal framing second. The long mid-sentence enumeration of formats largely duplicates the schema enum, which is mild redundancy, but nothing is padded or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the schema fully documents the five parameters including the nested _subject. The description supplies the why-default and refusal semantics; only the relationship to the history/viewing siblings is left implicit. Adequate for a complex export tool with rich schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes further by explaining the default choice ('methods is the default because it is the panel's first row and the only one every source can produce') and the conditional refusal of format/sbol_syntax, which is meaning the schema enum alone would not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Write a construct's recorded build out as a document') and then enumerates the seven concrete output forms, so an agent knows exactly what it produces. Positioning it as 'the Export tab of the History & Provenance panel' differentiates it from the read-side history siblings like get_construction_history or history_protocol.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It conveys when a given format applies and that unsupported formats are refused by name, which is useful operational guidance. But it never names an alternative tool or says when to export vs. view the history (e.g., versus get_construction_history), so usage is only implied rather than contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_map_svgA
Read-only
Inspect

Render the open record's map to a publication SVG string, circular or linear — the same figure the Export panel draws, with the same knobs and the same defaults. Give it enzymes to draw the restriction sites. The linear layout can draw both strands' bases and a window of the record (start/end), which is the sequence view as a figure.

NameRequiredDescriptionDefault
endNolinear only: last base of the window to draw (1-based, inclusive); left unset, the record's last base. In bp. Only applies when layout is linear.
fontNofigure font — one of the three stacks that survive an SVG-to-PDF conversion without substitution.sans
sizeNosquare canvas edge, before a legend strip is added below it. In px.
startNolinear only: first base of the window to draw (1-based); left unset, the record's first base. In bp. Only applies when layout is linear.
titleNofigure title; left empty, the record's own name is used.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
layoutNocircular: the ring; linear: the record unrolled into rows, features in lanes under a ruler and sites above it.circular
legendNoadd a colour key on its own strip below the map.
enzymesNoenzymes whose cut sites fill the site ring — resolved against the bundled cut catalog (REBASE spellings; smaller than the REBASE dossier the editor shows). Left unset, the run uses your active enzyme collection; with none active the ring is drawn empty rather than silently filled.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
show_basesNolinear only: draw both strands' bases over the ruler; rows wrap to keep each base readable. Only applies when layout is linear.
show_sitesNodraw the outer restriction-site ring.
show_labelsNodraw each feature's name beside its arc.
transparentNoomit the backing rect, so the figure drops onto any ground.
collapse_duplicate_labelsNofold leader labels that would repeat a name into one row, as `misc_binding ×13` — the same rule the interactive map uses. Off reproduces the upstream renderer's figure exactly, one leader per feature.

Output Schema

NameRequiredDescription
svgYespublication SVG string
rowsYesrows a linear map wrapped into; 0 for the circular layout
sitesYescut sites drawn (the outer ring, or the ticks above a linear map's ruler)
widthYesrendered width in px
heightYesrendered height in px — taller than the width when a legend strip was added

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful behavior beyond that: it returns an SVG string, mirrors the Export panel's defaults, and explains that enzymes drive the restriction-site ring and that linear layout can render bases and a start/end window.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences and front-loads the core action and output type. The remaining sentences add only the most relevant options, with no wasted preamble.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema, annotations, and output schema, the description is complete enough for selection and invocation. It covers purpose, key layout behavior, enzyme handling, and linear-window semantics, though it does not discuss every optional knob because the schema already does that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 15 parameters in detail and carries the main burden. The description adds conceptual framing for enzymes, layout, show_bases, and the start/end window, but most of that meaning is already present in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: render the open record's map to a publication SVG string, with circular or linear layouts. It clearly distinguishes the output as a figure like the Export panel draws, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use it to produce a publication SVG of the open record's map, optionally adding restriction sites or a linear sequence window. It does not explicitly name when not to use it or compare it against sibling export/drawing tools, 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.

export_traceA
Read-only
Inspect

Write a Sanger read out in any of the eight formats the trace editor's Export section offers, and hand the file back as TEXT in the pipeline rather than as a download. Reports what the chosen target DROPPED — a read written as FASTA loses its annotations, and every target but FASTQ loses the per-base quality — because those losses are invisible in the file itself. Trims the ends first when asked, by the same three methods the Trim section offers, so a graph does not need a separate step to write a trimmed read.

NameRequiredDescriptionDefault
trimNotrim the ends before writing, the same three ways the Trim section does. `none` writes the file's calls as they are; `auto` uses the file's own Mott record when it has one and the sliding window when it does not; `mott` is the instrument's record, which SCF and ZTR never carry; `window` always computes it here.none
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNothe target. FASTQ is the only one that carries the per-base Phred; GenBank and EMBL are the only two that carry annotations; the rest are a bare sequence.fasta
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace file to write: its name (`read_F.ab1`) or its project file id. A file id is project-specific, so a template ships this unset.
use_internal_nameNoname the record and the filename from the instrument's own sample record (ABIF `SMPL`) rather than from the file name. The instrument's name is often a plate well that means nothing outside the run; a file with no internal record uses its filename either way, and says so.

Output Schema

NameRequiredDescription
textYesthe file, as text. A VALUE and not a download, deliberately: a graph step that wrote to disk could not be composed with the step after it
basesYeshow many bases the file carries
readingYesthe same sentence the editor shows for this export, generated from it
filenameYesthe name this would be saved as, with the user's own extension for this format applied
sequenceYesjust the bases that were written, so a downstream step does not have to parse the record back apart
trimUsedYeswhich trim actually ran. `auto` answers `window` on a file with no Mott record, so a pipeline that assumed otherwise trimmed on a threshold nobody chose — the same trap `trim_trace`'s `methodUsed` exists for
fileBasesYeshow many calls the trace file holds. Read it against `bases`: the difference is what the bounds cut
lastBaseKeptYes1-based inclusive
firstBaseKeptYes1-based inclusive, the same convention `trim_trace` reports in and every trim readout in the editor uses
carriedQualityYeswhether the per-base Phred reached the file. False on every target but FASTQ, and on a read that never had one

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply the safety profile (readOnlyHint, destructiveHint=false), and the description goes well beyond them by disclosing lossy behavior that is invisible in the output: FASTA drops annotations, every target except FASTQ drops per-base Phred, and it reports those drops back. The text-vs-download distinction also explains why this reads as readOnly despite the verb 'write', so it complements rather than contradicts 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and consequence, and each sentence carries distinct information (output mode, data-loss reporting, trimming integration). Slightly dense and wordy in places, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with nested objects and an output schema, the description covers purpose, output mode, format trade-offs and the trim interaction without needing to explain return values. Nothing an agent needs to select and call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents trim, format, _subject, document and use_internal_name in detail, so the baseline is 3. The description adds framing (trim uses the same three methods as the Trim section; format losses drive output fidelity) but no syntax or value details beyond what the schema carries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (write/export) and resource (a Sanger read) and pins the scope precisely: it returns the serialized file as TEXT in the pipeline rather than a download. That distinguishes it cleanly from siblings like draw_trace, trim_trace, list_traces and restore_trace_file_calls without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to reach for it (to get a read out in one of eight export formats and to trim in the same step instead of a separate call), and it names the Trim section's methods as the mechanism. It stops short of naming specific alternative tools or an explicit when-not-to-use, so it is strong context rather than full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_treeA
Read-only
Inspect

Convert a tree between the four formats this workbench reads and writes — Newick, NEXUS, PhyloXML and NeXML — sniffing the input format rather than making the caller declare it. Newick loses annotations the richer formats carry, which is why the conversion is a step you choose rather than something done silently on export.

NameRequiredDescriptionDefault
nameNothe tree's name inside the written file (NEXUS and NeXML carry one). Advanced.tree1
treeYesthe tree, in any of the four formats.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNothe format to write. Values: newick (Newick), nexus (NEXUS), phyloxml (PhyloXML), nexml (NeXML).newick
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
textYesthe tree written in the requested format
sourceFormatYesthe format the input was sniffed as — check this when a conversion surprises you

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description usefully adds two behavioral facts beyond the annotations: input format is sniffed rather than declared, and Newick conversion is lossy for annotations carried by richer formats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and formats before the rationale. Tight overall, though the second sentence carries two ideas (lossiness plus why conversion is explicit) that could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and annotations cover the safety profile. The description supplies the remaining non-obvious context an agent needs: format handling and lossiness caveat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents tree, format, name, and the nested _subject/_files objects; the baseline of 3 applies. The description adds only the format-sniffing note, which lightly informs the tree param but does not elaborate on any parameter beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (convert) and resource (tree) and enumerates the four formats (Newick, NEXUS, PhyloXML, NeXML), which is more than a restatement of the title. However, it does not distinguish itself from the closely related sibling transform_tree, leaving the agent to infer the boundary from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing clause explains why conversion is a deliberate user-chosen step rather than silent export behavior, which implies the intended use context. It stops short of explicit when-to-use/when-not guidance or naming an alternative such as transform_tree or build_tree.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fastq_qcA
Read-only
Inspect

FastQC's report on FASTQ reads, every module a default FastQC run reports: per-base quality boxes, per-tile quality (when the headers carry a tile), per-sequence quality, per-base sequence content, per-sequence GC against FastQC's theoretical normal, per-base N content, sequence length distribution, duplication levels, overrepresented sequences with their possible source, and adapter content, each with FastQC's own pass/warn/fail grade and the limit it was graded on. The numbers are FastQC 0.13.0's, checked against the real program, including its quirks: a read's mean quality is the integer mean of its characters, GC is counted on the read cut to a whole 100 (or 1,000) bases, duplication is counted on the first 50 bases, and an adapter found at a position counts at every position after it, so the curve is cumulative. FastQC does not detect the encoding: Phred+33 unless you say 64. It does not trim or filter anything.

NameRequiredDescriptionDefault
readsYesthe reads, as FASTQ: four lines per record, quality line required.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
adaptersNoadapters to search for, in FastQC's --adapters format (a name, a tab, a sequence, one per line). Unset searches FastQC's own list. Advanced.
groupingNohow read positions pool into one group: FastQC's default (the first 9 bases one by one, then groups sized to stay under 75), none (one per base, --nogroup) or exponential (--expgroup).linear
contaminantsNosequences an overrepresented read is matched against for its possible source, in FastQC's --contaminants format (a name, a tab, a sequence, one per line). Unset uses FastQC's own list. Advanced.
phred_offsetNoquality encoding: 33 for every modern FASTQ, 64 only for pre-1.8 Illumina (FastQC's --phred64). Advanced.

Output Schema

NameRequiredDescription
failedYeshow many modules FastQC would fail
gradesYesmodule name to pass, warn or fail
reportYesevery module's table and grade: perBaseQuality (boxes), perTileQuality (null without tiles), perSequenceQuality, perBaseContent, perSequenceGc (counts, theoretical, mode, stdev, deviationPercent), nContent, lengthDistribution, duplication (percentOfTotal, percentRemaining), overrepresented (sequences with count, percentage, possibleSource), adapterContent
gcDeviationPercentYeshow far the per-read GC distribution sits from FastQC's normal, as a percent of reads

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnly/non-destructive/closed-world, the description still adds substantial un-structured behavior: the exact FastQC version 0.13.0, its integer-mean quality quirk, GC counted on reads cut to 100/1,000 bases, duplication computed on the first 50 bases, and cumulative adapter curves. It also discloses that encoding is not auto-detected (Phred+33 unless told 64) and that nothing is trimmed or filtered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The module inventory and scoping statement are front-loaded and every clause carries information (module list, grading, version-pinned quirks, encoding caveat). It is dense — a single long sentence followed by short ones — and the quirk catalogue could be tightened, but nothing is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation; the description instead covers the behavioral surface an agent can't read from the schema — determinism/version fidelity, encoding detection failure, and no trimming. For a 7-parameter QC tool with nested _subject, this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains reads, _files, _subject, adapters, contaminants, grouping and phred_offset. The description adds a little meaning to phred_offset ('Phred+33 unless you say 64') and echoes the duplication/grouping quirk, but it does not enrich most parameters beyond what the schema states — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation (produce FastQC's report on FASTQ reads) and enumerates every module returned, so an agent knows exactly what it gets. It also carves out the boundary against trimming siblings ('It does not trim or filter anything'), distinguishing it from trim_reads without naming it explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — run this to QC a FASTQ — and the 'Advanced' tags on adapters, contaminants and phred_offset quietly signal which knobs are non-default. But it never says when to prefer this over read_sequencing_qc or when to run trim_reads first, so the routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_articleA
Read-only
Inspect

Fetch a paper's whole open-access text from Europe PMC by PMCID or PMID: title, authors, journal, license, abstract, every section and every figure caption, as Markdown. This is how a pipeline reads a paper rather than its abstract; pass the Markdown to find_accessions for the records it names. Only Europe PMC's open-access subset is served, and an article outside it is refused with Europe PMC's own reason.

NameRequiredDescriptionDefault
idYesthe PMCID (PMC13627669) or PMID (39012345) of the paper.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
pmcidYesthe PMCID Europe PMC served it under
titleYesthe article's title
licenseYesthe article's own license statement, as the publisher wrote it
markdownYesthe whole article as Markdown, figure references linked to their captions
endpointsYesthe URLs actually called
retrievedAtYeswhen it was fetched

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the OA-only eligibility gate, that refusals come back with Europe PMC's own reason, and the Markdown output form. It does not cover rate limits, truncation for very long papers, or what a partial/legacy article yields, so it sits at an adequate 3-4; the OA refusal semantics push it to 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the verb and resource, then the pipeline/next-tool routing, then the eligibility caveat. No filler and no sentence that could be deleted without losing a decision-relevant fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema is present, so return-value documentation is not required, yet the description still enumerates the payload fields usefully. Eligibility and downstream routing are both covered. Minor gap: no guidance on error surfacing beyond refusal or on handling articles that are only partially available, but for a read-only fetch that is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the id property already documents the PMCID/PMID forms with examples, so the description largely restates the schema's id semantics and adds no new syntax. Baseline 3 is met; the minor lift to 4 comes from clarifying that either identifier type resolves to the same whole-article retrieval, which reinforces the schema's meaning rather than adding detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch), resource (a paper's whole open-access text), the source (Europe PMC), the accepted identifiers (PMCID or PMID), and enumerates exactly what the payload contains (title, authors, journal, license, abstract, sections, figure captions, as Markdown). This is specific enough that an agent can distinguish it from search_literature or generic record fetchers 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the tool as the full-text path ("how a pipeline reads a paper rather than its abstract") and chains it forward by telling the agent to pass the Markdown to find_accessions. It also states the eligibility boundary (only the open-access subset; outside articles are refused with Europe PMC's reason). It stops short of naming a specific alternative for the non-OA case, which keeps it at 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_clinvar_vcfA
Read-only
Inspect

Read one region of ClinVar's monthly release VCF, as the VCF ClinVar publishes: its header, then every record overlapping the region, through the release's tabix index so only those blocks are fetched. The ID column is the ClinVar Variation ID and INFO carries ClinVar's own CLNSIG, CLNREVSTAT and CLNDN. Use it to put ClinVar's calls for a locus beside your own.

NameRequiredDescriptionDefault
endYeslast base of the region (1-based, inclusive).
chromYesthe chromosome, with or without its chr prefix.
startYesfirst base of the region (1-based).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
assemblyNowhich release VCF to read.GRCh38
max_recordsNocap on records returned; the result says when the region held more.

Output Schema

NameRequiredDescription
vcfYesClinVar's header and the region's records, as the file holds them
recordsYeshow many records the region returned
summaryYeswhich release was read, and how many records the region held
fileDateYesthe release's own ##fileDate, which names the release read
endpointsYesthe VCF and index URLs actually read
truncatedYeswhether the region held more records than max_records

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond the read-only annotations: it explains that the output is a VCF with header and overlapping records, that fetching uses the tabix index, and what the ID and INFO columns contain. It does not discuss truncation behavior, errors, or data-size limits, but the key output semantics are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three dense, front-loaded sentences with no filler. It moves from what is read, to what the output contains, to the intended use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only fetch tool with annotations, a rich 7-parameter schema, and an output schema, the description covers the essential behavior and output content. It omits explicit mention of assembly selection, max_records truncation, and the project-file parameters, but those are documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter meanings are already fully documented in the schema. The description reinforces the region-based nature of chrom/start/end but adds no new syntax or constraints beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: reading one region of ClinVar's monthly release VCF. It also identifies the exact payload, including the VCF header, overlapping records, the Variation ID column, and ClinVar INFO fields, which clearly distinguishes it from generic variant lookup tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use case: putting ClinVar's calls for a locus beside your own data. However, it does not explicitly name alternatives such as lookup_variant or read_variant_calls, nor does it 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.

fetch_recordA
Read-only
Inspect

Fetch a sequence by accession from an authoritative archive (NCBI Nucleotide or Protein, ENA, UniProtKB, the iGEM Registry, Addgene, or the EBI Dbfetch gateway) and hand it downstream as a real record with its annotations. This is how a pipeline starts from a published sequence rather than from whatever happens to be open.

NameRequiredDescriptionDefault
dbNoDbfetch only: which of its databases. Only applies when source is dbfetch.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNoDbfetch only: which of that database's formats. Only applies when source is dbfetch.
sourceNowhich archive holds it. Values: ncbi (NCBI Nucleotide), ncbi-protein (NCBI Protein), ena (ENA), uniprot (UniProtKB), igem (iGEM Registry), addgene (Addgene), dbfetch (EBI Dbfetch).ncbi
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
accessionYesthe accession to fetch, e.g. NC_005816, U49845, P38398, BBa_R0040. An NCBI accession may carry a window: `NC_005816 REGION: 5000..7000`.
record_indexNowhich record to emit when the fetched file holds several (0-based).

Output Schema

NameRequiredDescription
nameYesthe record name the archive gave it
lengthYesits length in bases (or residues, for a protein)
recordYesthe fetched sequence, ready for a downstream node's $subject
circularYeswhether the archive says it is circular
provenanceYesthe archive, the accession, the URL and when it was fetched — what makes the result re-fetchable
featureCountYeshow many annotations came with it

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint), so the bar is lower. The description usefully adds that the result is materialized as a real record with annotations rather than a raw string, but says nothing about archive unavailability, invalid-accession behavior, or how multiple records are resolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and its scope; the second sentence earns its place by distinguishing this from the open-record path. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the source list plus record semantics cover the agent's needs. Minor gap: no guidance on choosing among archives when an accession could exist in several, or on failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (db, format, source, accession, record_index, _subject, _files) is documented in the schema itself, including the REGION window syntax. The description adds only the archive enumeration, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch) and resource (a sequence by accession) and enumerates the exact archives it draws from, including the Dbfetch gateway. An agent knows precisely what this produces: a downstream record with its annotations, not raw text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'starts from a published sequence rather than from whatever happens to be open' implicitly routes the agent away from the open-record sibling (get_open_record), but it never names that sibling or states exclusions explicitly. Clear context, no named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter_itemsA
Read-only
Inspect

Keep only the rows of a table-shaped output that meet a condition — the bands above a size, the guides over a score, the assays under a penalty. Emits the kept rows plus how many were dropped, so a downstream gate can act on the count.

NameRequiredDescriptionDefault
maxNoupper bound, inclusive. Only applies when operator is between.
minNolower bound, inclusive. Only applies when operator is between.
setNothe values the field must be one of (or none of). Only applies when operator is in or not_in.
textNothe text a field must contain. Only applies when operator is contains.
fieldNowhich field of each row to test (e.g. `size`, `score`, `length`). Leave empty to test the row itself when it is a plain number.
itemsYesthe rows to filter — wire a json/list output (bands, guides, assays, amplicons).
valueNothe value to compare against. Only applies when operator is == or != or > or >= or < or <=.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
operatorNohow to compare. Values: == (equals), != (does not equal), > (greater than), >= (at least), < (less than), <= (at most), between (between (inclusive)), in (is one of), not_in (is none of), contains (contains text), is_true (is true), not_empty (is not empty).>=

Output Schema

NameRequiredDescription
countYeshow many rows were kept — wire this into check_value to gate on it
itemsYesthe rows that met the condition
droppedYeshow many rows were removed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it emits the kept rows plus a count of dropped rows, which signals the return shape and the downstream gating intent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences that lead with the core operation and follow with the output/gating behavior. No filler, no restatement of the tool name, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the schema documents all 10 parameters, so return values and argument semantics need not be re-explained. The description covers purpose and output intent adequately for a filter tool, leaving only sibling routing unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every operator (between, in, contains, comparisons) and its bound parameters are documented in the schema itself. The description offers only the generic word 'condition' and adds no syntax, defaults, or field-selection guidance beyond it, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (keep/filter) and resource (rows of a table-shaped output) with concrete domain examples (bands above a size, guides over a score, assays under a penalty). This is far more specific than its neighbors, though it never names an alternative sibling like summarize_rows or check_rows to draw the boundary explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the mention that a downstream gate can act on the dropped count, which hints at conditional downstream routing. There is no explicit when-to-use or when-not-to-use statement versus related tools such as check_rows, summarize_rows, or pick_first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_accessionsA
Read-only
Inspect

Find the sequence accessions a text names (a paper's methods, a notebook, a report) and resolve each against its archive: identifiers.org's own pattern for every namespace a fetch target serves, scanned over the text, then one batched search per archive. A span is listed only when the archive returns a record with that accession, so a catalog number with an accession's shape is reported as unresolved rather than as a hit. Hand accessions to fetch_record.

NameRequiredDescriptionDefault
textYesthe text to scan, e.g. the markdown fetch_article returns.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
foundYeseach resolved accession with the record it names (archive, title, organism, length) and how often the text mentions it
summaryYeshow many accessions resolved, at which archives, and how many spans did not
accessionsYesevery resolved accession as the text writes it, in text order
namespacesYesthe identifiers.org namespaces read, by prefix and registry name
unresolvedYesspans a pattern admitted that no archive holds

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/openWorld/non-destructive, but the description adds real behavioral detail beyond them: identifiers.org pattern matching per namespace scanned over the text, one batched search per archive, and the important false-positive policy — a span is listed only when the archive resolves it, otherwise reported as unresolved. That is substantive, non-obvious semantics. It stops short of describing pagination/limits or result ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and ending on the actionable handoff to fetch_record. Dense but every sentence contributes; the nested clause about pattern scanning is slightly heavy but informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies the resolution policy and downstream step, which are the pieces an agent most needs. Minor gap: it doesn't clarify how _files/_subject interact with the text scan for this particular call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema itself documents text, _files, and _subject. The description reinforces that `text` is the scanned input but adds no syntax or format guidance for _files/_subject beyond what the schema already carries. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find the sequence accessions a text names') and scopes the input explicitly (a paper's methods, a notebook, a report). It also distinguishes itself from fetch_record by designating this tool as the accession-discovery step whose output feeds the fetch. An agent can tell what it does and where it sits in the pipeline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage context (scanning prose-like text for identifiers) and an explicit downstream handoff ('Hand `accessions` to fetch_record'). It does not state exclusions or name a competing tool for the same job, but the workflow routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_assembliesA
Read-only
Inspect

Resolve an organism to its published genome assemblies and the chromosomes, plasmids and organelles each one is made of, with every accession and length NCBI reports. This is how a pipeline starts from a SPECIES rather than from an accession somebody looked up by hand: hand the replicon accession it returns to fetch_record, with a region, to pull a window of that chromosome. Assemblies come back reference-first, so the default pick is the canonical genome.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
assemblyNoan assembly accession to take the replicons of, instead of this organism's top one. Use it to pin a pipeline to one genome build rather than to whatever is reference today.
organismYesa scientific name, a common name, or a taxonomy id (NCBI Datasets accepts all three). "Escherichia coli", "human", "559292" are all valid.
repliconsNolist the chosen assembly's assembled molecules too. Off costs one request and answers 'which assemblies exist'; on costs two and answers 'which chromosome do I fetch'.

Output Schema

NameRequiredDescription
lengthYesthat replicon’s length in bases, so a region can be chosen against a real span
assemblyYesthe chosen assembly accession: the one asked for, else this organism’s reference-first top hit
organismYesthe assembly record's own organism name, canonical rather than the words that were typed
accessionYesthe largest replicon's nucleotide accession: for most genomes the main chromosome, and what a fetch_record node's $accession wants
repliconsYesthe chosen assembly's assembled molecules (accession, name, length and molecule type), or empty when replicons were not asked for
assembliesYesevery current assembly NCBI publishes for the organism: accession, RefSeq or GenBank, assembly level, organism, tax id, release date and total length

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds real behavior beyond that: reference-first result ordering, the canonical-genome default, and the request-cost tradeoff for the replicons flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what it returns before moving to usage and defaults. Slightly discursive phrasing ('This is how a pipeline starts from a SPECIES rather than from an accession somebody looked up by hand') costs a little, but every sentence adds usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description covers the remaining agent needs: entry point, result ordering, default selection, and the follow-on tool call. Nothing required to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions are already rich, so the baseline is 3. The description lifts it by explaining intent: 'assembly' pins a pipeline to one genome build, and 'replicons' on/off answers different questions at different request costs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Resolve an organism to its published genome assemblies') and enumerates the returned content (chromosomes, plasmids, organelles, accessions, lengths). It clearly distinguishes itself from accession-based retrieval tools by naming the workflow it starts and the sibling (fetch_record) it hands off to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the when: start from a SPECIES rather than a hand-looked-up accession, and route the returned replicon accession into fetch_record with a region. It also documents the selection default ('Assemblies come back reference-first, so the default pick is the canonical genome'), leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_linear_motifsA
Read-only
Inspect

Short linear motifs in a protein: degrons, docking sites, targeting signals, cleavage and modification sites — the three-to-eleven-residue functional sites a profile-HMM domain scan cannot see. Runs ELM's own class patterns ON THIS MACHINE; only the class table is fetched. Applies ELM's context filters: the chance-probability cutoff, family selection, and the globular-domain filter when you pass domains. It does NOT scan for DOMAINS — for those call scan_protein_domains, which submits to EMBL-EBI InterProScan and returns domains in exactly the form this tool's domains parameter takes.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
domainsNothe globular domains to bury motifs in, as `start-end` residue ranges (1-based, inclusive), comma-separated, each optionally labeled `start-end@label` so a dropped hit can say what buried it — e.g. `20-153@G3DSA:3.90.180.10, 296-341@G3DSA:3.90.180.10`. Pass the FRAGMENTS of an InterProScan domain match, not its outer span. Empty falls back to the scan the Protein domains panel holds, which is the only source the in-browser doors need. Only applies when filterInDomains is true.
proteinYesthe protein sequence, one-letter codes; wire it from translate_sequence or read it off a CDS.
speciesNothe species the protein comes from, as an NCBI Taxonomy id (e.g. 4932) or a scientific name (e.g. Saccharomyces cerevisiae), for ELM's taxonomic range filter: a motif whose class ELM does not place in that species' lineage is dropped, with its range. Empty runs no taxon filter, which is ELM's own default.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
familiesNorestrict to these ELM families, comma-separated, from CLV, DEG, DOC, LIG, MOD, TRG. Empty is no restriction and scans every family; the literal "none" is a restriction to no family and scans nothing, which is what the panel does when every family is unticked.
compartmentsNorestrict to motifs whose class is annotated for these cell compartments, as GO ids, comma-separated (e.g. GO:0005634 for nucleus). Empty runs no compartment filter, which is ELM's own default.
expectCutoffNoELM's class gate: classes whose chance probability per residue exceeds this are not scanned at all. ELM's own default is 0.01; 0 scans every class, which is the resource's “all found (before filtering)” listing.
filterInDomainsNoapply ELM's globular-domain filter, dropping motifs buried inside a folded domain. Takes the domains from `domains` when you pass them, and otherwise from the scan the Protein domains panel currently holds; with neither, the call refuses rather than silently not filtering.
structuralContextNoscore each motif's structural context, as ELM's structure filter does. Empty applies nothing, which is the panel's own default. `alphafold` uses the predicted model and yields Q_acc only. A four-character PDB id (e.g. `1crn`) uses that experimental entry and yields Q_acc, Q_sse and ELM's three-way verdict, because only a real entry has a DSSP file. Either way the protein is resolved to its UniProt entry by sequence checksum first, and the call refuses if it is not an exact match.

Output Schema

NameRequiredDescription
hitsYeseach surviving motif, in the engine’s own field names: identifier, accession, functionalSiteName, description, 1-based start/end, the residues that matched, the class chance probability, and how many experimentally annotated instances ELM holds
countYessurviving motifs, after every filter that ran
accountingYeswhat the scan was actually run against — classes scanned, classes skipped by the cutoff, classes skipped by the family selection — so a hit count can be read against its denominator rather than on its own
provenanceYesthe ELM release and date the scan ran against, and the filters that ran

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld=false, and the description adds real behavioral context beyond them: patterns run locally with only the class table fetched, ELM's context filters are applied, and two failure modes are named (refuses rather than silently not filtering; refuses unless the sequence checksum is an exact UniProt match). It stops short of describing rate limits or output shape, but the local-vs-network and refusal semantics are substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the what, then the how, then the sibling routing — a good information order with no filler sentences. It is dense and relies on caps and em-dashes for emphasis, but every clause (local execution, filter semantics, refusals) carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not explain return values, and annotations cover the safety profile. Given 10 parameters and nested objects, the description still covers the non-obvious semantics — filter interactions, domain-source fallback, and refusal conditions — so an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries the parameter detail and a baseline of 3 would be defensible. The description nevertheless adds cross-tool wiring value the schema cannot: it tells the agent that scan_protein_domains returns `domains` in exactly the form this tool's `domains` parameter takes, and clarifies that fragments, not outer spans, are expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Short linear motifs in a protein') and enumerates the motif classes (degrons, docking sites, targeting signals, cleavage/modification sites) with a concrete size range. It explicitly contrasts itself with the sibling scan_protein_domains, so an agent can distinguish them 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not: 'It does NOT scan for DOMAINS — for those call scan_protein_domains'. It also explains the conditional behaviors that govern usage (globular-domain filter only when domains are passed, the fallback to the Protein domains panel, structuralContext refusing on non-exact matches).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_orfsB
Read-only
Inspect

Find open reading frames on BOTH strands of the subject (origin-spanning when circular).

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
min_sizeNominimum ORF size. In bp.
alternative_startsNoalso accept GTG/CTG as start codons (not just ATG).

Output Schema

NameRequiredDescription
orfsYesthe ORFs (start, end, frame, strand)
countYesnumber of ORFs found
longestYeslength of the longest ORF in bp

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds real behavioral value beyond that: it searches BOTH strands and handles origin-spanning ORFs when the subject is circular. It does not disclose defaults (min_size 300), the size bound, or result shape, but an output schema exists to carry the return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with zero filler, and the most important qualifier (both strands) is front-loaded alongside the circular caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema and annotations carry much of the burden, and the strand/circular behavior is a useful addition. However, for a nested-object parameter tool with no required params, the agent gets no guidance on selecting an input form or on how the circular flag interacts with origin-spanning results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so min_size and alternative_starts are fully documented structurally; baseline 3 applies. The description adds no parameter-level meaning beyond what the schema already says, though 'circular' in the text hints at the _subject.circular flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find open reading frames') and scopes it to the subject, which is distinguishable from siblings like find_linear_motifs or find_star_sites. It does not explicitly name a neighboring alternative, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus translate_sequence, infer_proteins, or auto_annotate. Usage is only implied by the tool name; no exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_primer_snpsA
Read-only
Inspect

Find known SNPs under primers, the check NCBI Primer-BLAST makes with "Primer binding site may not contain known SNP". The template is placed on the UCSC assembly it was cut from, and the placement is proved by comparing the assembly's own sequence with the template; dbSNP 155 is then read over that span from the UCSC Genome Browser, and every primer is reported with the SNPs under it and each one's distance from the 3' end. excluded is the SNP spans in the form design_primer_pairs takes, to design around them. The template's sequence does not leave the machine; the assembly, chromosome and span are sent to UCSC.

NameRequiredDescriptionDefault
pairsNothe pairs to check, as design_primer_pairs' `pairs` output (each with forward and reverse start/end on the template).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
forwardNoa forward primer to locate on the template by exact match, when no `pairs` are given.
reverseNoa reverse primer to locate by exact match of its reverse complement.
snp_setNo`dbSnp155Common`: About 15 million variants with a minor allele frequency of at least 1% in 1000 Genomes Phase 3. The default. `dbSnp155`: Every mapped variant: 1.06 billion locations on hg38, so few primers avoid them all. `dbSnp155ClinVar`: About 820,000 variants ClinVar mentions, benign and pathogenic alike.dbSnp155Common
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
assemblyYesthe UCSC assembly id the template was cut from (hg38, mm39, danRer11…).
positionYeswhere the template sits in that assembly, as chromosome:position, 1-based: the lowest assembly coordinate the template covers. The check finds which strand the template reads on itself.
templateNothe sequence the primers sit on. Left empty, the open record is used.
window_endNo1-based last base of the span to check. Advanced.
window_startNo1-based first base of the template span to check. Unset = the whole template. Advanced.

Output Schema

NameRequiredDescription
snpsYesevery SNP in the span, placed on the template (0-based, end-exclusive), with alleles as they read on the template's strand and whether the template spells dbSNP's reference allele there
flaggedYeshow many primers sit on at least one known SNP
primersYesevery primer checked: its name, span on the template, strand, and the SNPs under it with rsID, alleles, minor allele frequency and distance from the 3′ end (1 = the 3′ base)
excludedYesthe SNP spans, for design_primer_pairs' `excluded`

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/openWorld/non-destructive, and the description adds substantial context beyond them: exactly what leaves the machine (assembly, chromosome and span to UCSC, not the template sequence), the data source read (dbSNP 155 over the placed span), the placement-verification step, and the shape of the report (each primer with its SNPs and distance from the 3' end). This is meaningful behavioral disclosure, not restatement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then mechanism, then the `excluded` hand-off and the privacy note. Dense but every sentence carries information; no filler. Slightly monolithic as one paragraph, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be spelled out, and the privacy/data-flow disclosure plus the annotation safety profile cover most of what an agent needs. It omits failure modes that matter for an external-placement-dependent tool (assembly unavailable in UCSC, template not found at position, strand mismatch), which leaves a small completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the documented baseline is 3, but the description adds genuine cross-parameter meaning: `pairs` is tied to design_primer_pairs' output shape, `excluded` is the design-around form, and `position` is explained as the lowest 1-based assembly coordinate with strand inference. It stops short of clarifying parameter interactions (pairs vs forward/reverse vs template precedence).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Find known SNPs under primers') and immediately anchors it to the exact external check it mirrors (NCBI Primer-BLAST's 'Primer binding site may not contain known SNP'). The resource is unique among siblings (check_primer_specificity covers off-target binding, primer_check covers general quality), so an agent can tell what this 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the `excluded` output is described as 'the SNP spans in the form design_primer_pairs takes, to design around them', which sketches a check-then-redesign workflow but never says when to run this versus primer_check or check_primer_specificity. No exclusions or prerequisites are stated, so the agent must infer placement in the pipeline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_restriction_sitesB
Read-only
Inspect

Cut positions of the given enzymes on the open plasmid (top/bottom cut, overhang, kind).

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesenzyme names to scan for — resolved against the bundled cut catalog (REBASE spellings; smaller than the REBASE dossier the editor shows), e.g. EcoRI, BsaI. Left unset, the run uses your active enzyme collection.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
sitesYescut sites on the subject

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context by naming the fields returned (top/bottom cut, overhang, kind) and implying it operates on the currently open record, but says nothing about failure modes (no open record, unknown enzyme name) or the catalog fallback behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the most important element (what is computed) comes first. The trailing parenthetical is efficient but 'kind' is slightly opaque, which costs it the top score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the parameters are fully documented in the schema — those burdens are lifted. However, for a tool that acts on an implicit 'open plasmid' via a nested _subject/_files schema, the description never clarifies the targeting model or when the operation fails, leaving a real gap in usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all three parameters, so the baseline is 3. The description only echoes the 'given enzymes' input and the target plasmid; it adds no syntax, naming conventions or resolution behavior beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation (computing cut positions) on a specific resource (the given enzymes on the open plasmid) and enumerates the result detail (top/bottom cut, overhang, kind). It is clearly distinguishable from label-different siblings such as digest_fragments or scrub_restriction_sites, though it never names an alternative to confirm the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisite statement (e.g. that a plasmid must be open), and no routing to related tools like enzyme_cut_counts, digest_fragments or restriction_ligate. The only hint of scope is the phrase 'on the open plasmid', which is implicit at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_star_sitesA
Read-only
Inspect

Where the given enzymes could ALSO cut the open plasmid under non-standard conditions, from REBASE's own star-activity list and its one-base rule. Not cut sites: these need low ionic strength, high pH, Mn²⁺ for Mg²⁺, glycerol, DMSO or some detergents, and are what turns an over-digested reaction into a band pattern that reads as the wrong clone.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesenzymes to check — resolved against the bundled cut catalog (REBASE spellings; smaller than the REBASE dossier the editor shows). Left unset, the run uses your active enzyme collection.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
sitesYestotal possible star sites across the enzymes REBASE has examined
enzymesYesper enzyme: whether REBASE examined it, and its possible star sites here
unexaminedYeshow many of the enzymes REBASE has NOT tested for star activity

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description usefully adds domain behavioral context (star activity requires low ionic strength, high pH, Mn2+ substitution, glycerol, DMSO, detergents), but says nothing about the tool's own execution behavior. Adequate given annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with the purpose front-loaded, then the distinguishing conditions. Dense technical jargon is justified for the domain, though the first sentence's phrasing ('Where the given enzymes could ALSO cut') is a slightly awkward way to open.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the annotations cover safety. The description supplies the conceptual grounding (what star sites are, why they matter) that an agent needs to interpret results, though it does not mention the enzyme-collection default or subject resolution, which the schema handles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents enzymes, _subject, and _files, including the REBASE spelling note and the default-to-active-collection behavior. The description adds the 'one-base rule' and REBASE provenance but no parameter-level syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: finding where enzymes could ALSO cut under non-standard (star) conditions, sourced from REBASE's star-activity list and one-base rule. It explicitly differentiates from normal cut sites ('Not cut sites'), which distinguishes it from find_restriction_sites, though the opening clause is slightly indirect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives context for when star sites matter (non-standard conditions, over-digested reactions reading as the wrong clone), which implies when to reach for this tool. However, it never names an alternative tool or states an explicit when-not condition, so routing versus siblings like find_restriction_sites is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fold_guideA
Read-only
Inspect

Fold a guide RNA — the spacer alone, and the whole sgRNA on a real published scaffold — and report which bases of the spacer pair with the scaffold. A spacer that base-pairs into the scaffold disrupts the structure Cas9 binds, which is a physical cause of a dead guide rather than a score. Every free energy is a minimum-free-energy fold under the Turner 2004 nearest-neighbour parameters, in kcal/mol, cross-checked against ViennaRNA 2.7.2.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sg_rnaNoalso fold the full spacer+scaffold sgRNA, not just the spacer.
spacerYesthe protospacer to fold.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
nucleaseNopicks the scaffold published for that nuclease. Values: SpCas9 (SpCas9: NGG (3')), SpCas9-NG (SpCas9-NG: NG (3')), SpG (SpG: NGN (3')), SpRY (SpRY: NRN (3')), xCas9 (xCas9: NG (3')), SaCas9 (SaCas9: NNGRRT (3')), SaCas9-KKH (SaCas9-KKH: NNNRRT (3')), AsCas12a (AsCas12a: TTTV (5')), LbCas12a (LbCas12a: TTTV (5')), enAsCas12a (enAsCas12a: TTTV (5')).SpCas9

Output Schema

NameRequiredDescription
sgRnaYesthe full sgRNA fold, when a scaffold is published for this nuclease
spacerYesthe spacer's own fold: sequence, dot-bracket structure and free energy
unavailableYeswhy nothing was folded, when no scaffold is published for this nuclease; null when the fold ran
scaffoldNameYeswhich published scaffold was used. Null when no scaffold is published for this nuclease
scaffoldIntactYeswhether the scaffold still folds as published once the spacer is attached. Null when no scaffold is published for this nuclease: false would read as a disrupted scaffold
spacerScaffoldPairsYeshow many spacer bases pair INTO the scaffold — every one of them disrupts the structure Cas9 binds. Null when no scaffold is published for this nuclease

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, non-destructive, non-open-world behavior, so the safety profile is covered. The description adds genuine method transparency: minimum-free-energy folds under Turner 2004 nearest-neighbour parameters, units in kcal/mol, and cross-checking against ViennaRNA 2.7.2, which tells the agent what kind of numbers to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and output, followed by the biological rationale and the computational method. Every sentence carries information an agent cannot get from the structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full parameter coverage, and annotations already present, the description only needs to add interpretation and method, which it does. It is complete for calling the tool correctly, though it says nothing about runtime or input constraints (e.g., spacer length expectations).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum values (nuclease scaffolds, sg_rna toggle, spacer) are fully documented in the schema itself. The description only echoes the spacer/sgRNA distinction without adding format, length, or scaffold-selection detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fold) on a specific resource (guide RNA) and narrows the scope further to the spacer alone plus the full sgRNA on a published scaffold, reporting spacer-scaffold base pairing. This is clearly distinct from generic folding siblings like fold_rna because the resource and the reported result are guide-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'a physical cause of a dead guide rather than a score' tells the agent when this tool is appropriate — diagnosing structural causes of guide failure as opposed to scoring tools like crispr_score_deephf or screen_guides. No explicit when-not or named alternative, 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.

fold_rnaA
Read-only
Inspect

Minimum-free-energy secondary structure (dot-bracket + ΔG) of an RNA/DNA sequence (Turner-2004).

NameRequiredDescriptionDefault
seqYesthe RNA/DNA sequence (T read as U).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
dgYesΔG [kcal/mol]
dotBracketYesMFE structure (dot-bracket)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine context by naming the Turner-2004 nearest-neighbor model and the returned representation (dot-bracket plus ΔG), but omits important behavior for a folding tool: pseudoknot handling, length limits, and whether DNA is folded with RNA parameters (it only says T read as U in the schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence, front-loaded with the deliverable (MFE dot-bracket + ΔG), with the model citation parenthesized at the end. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still previews them. However, for a computational tool with a nested _subject record parameter, the definition gives no caveats about input limits, pseudoknots, or ambiguity handling, leaving gaps an agent could trip over on non-trivial inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's only parameter-relevant contribution is the RNA/DNA framing of the sequence input; the meaning of _subject and _files is entirely carried by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb+resource (minimum-free-energy secondary structure of an RNA/DNA sequence), plus the output format (dot-bracket + ΔG) and the energy model (Turner-2004). An agent can tell this is a folding computation rather than, say, a structure reader like read_structure or a guide-design tool like fold_guide, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'of an RNA/DNA sequence' suggests feeding a sequence to obtain a fold. There is no statement of when to prefer this over read_structure, read_structure_consensus, or fold_guide, and no preconditions such as reasonable sequence length or single-sequence input.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fragment_ionsA
Read-only
Inspect

Theoretical MS/MS fragment ion ladder of a peptide: a, b, c from the N-terminus and x, y, z from the C-terminus, with neutral-loss and radical variants, at each charge up to a maximum (validated against pyteomics, cross-checked against OpenMS). Takes ProForma modification tags (a signed mass, a Unimod name, or UNIMOD:accession) on residues and termini.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
ionTypesNoion series to generate.
sequenceYespeptide: one-letter residues, optionally ProForma tags, e.g. [TMT6plex]-PEPTM[Oxidation]IDE or [+229.162932]-PEPTM[+15.994915]IDE.
maxChargeNohighest fragment charge (every charge from 1 up to it).

Output Schema

NameRequiredDescription
ionsYesone row per fragment: ionType, index (residues), charge, name, m/z
countYesfragments generated

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the output is validated against pyteomics and cross-checked against OpenMS, signalling a deterministic, trusted computation rather than an approximate one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core capability before the parenthetical provenance note. It is dense but every clause carries information; the validation parenthetical is slightly long but justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers the fragmentation model, ionization scope and modification syntax. It leaves maxCharge and the required-peptide input handling to the schema, which is acceptable given the 100% schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description goes further by spelling out the three accepted modification-tag forms (signed mass, Unimod name, UNIMOD:accession) and the modification can sit on residues or termini. It adds mild value over the schema's own examples, though ionTypes and maxCharge semantics are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: the theoretical MS/MS fragment ion ladder of a peptide, enumerating the ion series (a/b/c N-term, x/y/z C-term) and the neutral-loss/radical variants. This is far more specific than sibling tools like peptide_mass or score_spectrum, so an agent can distinguish it 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the tool's scope inferable (theoretical fragmentation, not experimental scoring), which implies when it applies. However, it never names a sibling alternative such as peptide_mass, score_spectrum, or protein_digest, nor states exclusions, so the agent must infer routing from the topic alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fusion_pcrAInspect

Overlap-extension (fusion) PCR — join fragments that share terminal homology into one product, carrying their features across (pydna). Emits the fused product as a NEW record.

NameRequiredDescriptionDefault
limitNominimum shared terminal homology two fragments must have to fuse (pydna's own default is 15). In bp.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
fragmentsNothe fragments to fuse, in order — wire upstream `record` outputs here, or name library documents.
include_subjectNoalso include the node's subject as the first fragment.

Output Schema

NameRequiredDescription
recordYesthe fused product, as a record
reportYesthe engine's own summary (count + sizes)
productsYesevery fused product
junctionsYesthe first product's joins: each overlap's product coordinates (0-based inclusive), bases, length and Tm
productTmYesproduct melting temperature of the first product
productCountYesnumber of products (>1 = ambiguous fusion)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as non-read-only and non-destructive. The description adds real value beyond that: it discloses the engine (pydna) and, importantly, that output is a NEW record rather than in-place modification. It doesn't mention failure behavior when homology is insufficient or the limit constraint, so not 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the mechanism and ending with the output behavior. No filler, every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations and an output schema present, the description needn't explain returns, and the 'NEW record' note covers the key behavioral question. The main gap is absence of routing guidance to sibling assembly tools, but for correct invocation the definition is otherwise sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description reinforces that fragments are fused 'in order' and that features carry across, but the limit/homology and include_subject meanings are already fully documented in the schema, so little is added beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific mechanism (overlap-extension/fusion PCR) and resource: joins fragments sharing terminal homology into one product, carrying features across, via pydna. An agent can identify the operation clearly. It doesn't explicitly contrast with adjacent joining siblings like gibson_assemble or ligate_fragments, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the homology requirement ('fragments that share terminal homology'), which is a useful selection condition. However, there is no explicit when-to-use, when-not, or named alternative among the many assembly tools (gibson_assemble, ligate_fragments, golden_gate_assemble), 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.

gate_dropletsA
Read-only
Inspect

Two-channel ddPCR droplet-amplitude exports to a template concentration, by CLASSIFYING the raw droplets rather than trusting a count the instrument already made. Four steps in a fixed order, each of which needs the previous one's output: a k-means quality check marks wells whose two droplet clusters are not separable, a plate-wide 1%-slice IQR cutoff marks outlier droplets, a two-component Gaussian mixture per well per channel sets the empty-droplet cutoff on the droplets that survive, and the empty fraction inverts through the Poisson zero term to copies/uL. Reports the cluster the droplets landed in and the reason any well was rejected, so a failed well reads as rejected rather than as a concentration. This is the counterpart of quantify_dpcr, not a duplicate: that one starts from per-well positive COUNTS an instrument already classified, this one starts from the amplitudes and does the classifying.

NameRequiredDescriptionDefault
filesYesthe droplet exports, as `<filename>` and its CSV body. QuantaSoft writes one `<name>_<well>_Amplitude.csv` per well with columns `Assay1 Amplitude, Assay2 Amplitude, Cluster`; the well id is read from the FILE NAME because the body does not carry it. Separate files with a line containing only `---`, and start each with `# <filename>`.
x_varNoname for the X channel, which is the file's SECOND amplitude column. Bio-Rad's Ch2 is usually HEX or VIC.HEX
y_varNoname for the Y channel, which is the file's FIRST amplitude column. Bio-Rad's Ch1 is usually FAM.FAM
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cutoff_sdNohow many standard deviations above the LOWER mixture component's mean the empty cutoff sits. This is the knob that decides which droplets are empty, and therefore the concentration.
cutoff_iqrNohow many interquartile ranges above the third quartile of that slice a droplet must sit to be an outlier.
random_seedNore-seeded before EVERY k-means and EVERY mixture fit, not once per run. Neither has a deterministic start, so this value IS part of the answer: a different seed lands the mixture on a different local optimum and moves the empty cutoff. Upstream's default is 8.
top_percentNothe top slice of droplets, pooled across the SUCCESSFUL wells, that the outlier cutoff is computed on. One cutoff per axis for the whole plate, not one per well.
total_drops_tNofewer accepted droplets than this and the well is rejected before it is clustered at all.
empty_lambda_lowNosmallest empty-droplet fraction a well may have. Below it the smaller k-means cluster is too small to be the empty population, which means the run did not separate.
droplet_volume_ulNomean volume of ONE droplet, in µL. A per-platform constant: 0.85e-3 µL (0.85 nL) for the Bio-Rad QX200, which is what the QuantaSoft export comes from.
empty_lambda_highNolargest empty-droplet fraction a well may have. Above it almost every droplet is empty, so there is no positive population to quantify and a concentration would be an extrapolation.

Output Schema

NameRequiredDescription
countYeshow many wells were read
wellsYesone row per well: droplet counts by cluster, the empty fraction, the per-well cutoffs, and the concentration in copies/uL — null for a rejected well, never a number
paramsYesevery parameter the run used, including the ones left at their defaults: the seed and the two cutoff multipliers change the concentration, so a reading without them is not comparable
rejectedYeshow many wells were rejected by the quality check and so carry no concentration
verdictsYeswhy each well passed or was rejected, with the k-means the verdict was taken from: both cluster centres, their sizes, their distances to the origin and the gap between them
outlierCutoffYesthe two plate-wide outlier cutoffs, echoed because they were computed from the successful wells only and so depend on which wells passed
totalDropletsYesevery droplet read, across every well — the denominator the cluster counts account for

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this read-only and non-destructive, so the bar is lower, but the description adds rich behavioral context: a fixed four-step order with dependencies, rejection reasons, output shape for failed wells, and the critical non-determinism warning that random_seed is re-seeded before every k-means and mixture fit and is part of the answer. This is well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core operation, then methodically lists the four ordered steps, and closes with the key sibling distinction. Despite its length, the complexity of the tool justifies it, and no sentence reads as filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations covering safety, and 100% input-schema description coverage, the description only needs to add process and routing context. It does so thoroughly by covering algorithm order, rejection behavior, non-determinism, and the alternative tool, leaving no major gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 13 parameters in detail. The description adds value by explaining how the parameters interact as a pipeline (k-means separation, plate-wide IQR outlier removal, per-well mixture cutoff, Poisson inversion), giving the numeric knobs a coherent algorithmic role.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific process (two-channel ddPCR droplet-amplitude exports to template concentration via classifying raw droplets) and explicitly distinguishes it from quantify_dpcr. An agent can tell what this tool does and how it differs from the closest named alternative 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit selection rule against quantify_dpcr: that tool starts from per-well positive counts an instrument already classified, this one starts from amplitudes and does the classifying. However, it does not address the similarly named sibling classify_droplets, leaving a potential routing gap for an agent deciding between the two.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gc_contentA
Read-only
Inspect

GC fraction of the subject — whole-sequence, or a sliding window profile (DnaChisel).

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
windowNosliding-window size; unset = one value for the whole sequence. In bp.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
gcYesGC fraction over the whole sequence (0–1)
plotYesthe windowed GC profile as a plot, by window centre (only when `window` is set)
profileYesper-window GC fractions (only when `window` is set)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a read-only, non-destructive, non-open-world operation. The description adds the two computation modes and mentions DnaChisel, but it does not disclose constraints such as handling of circular sequences, edge cases, or output behavior beyond what the annotations and output schema provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately names the computed quantity and then qualifies the two operating modes. It is appropriately sized with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 100% schema description coverage, a rich nested _subject object, and an output schema, the description does not need to explain parameters or return values. It is nearly sufficient for invocation, though explicit sibling routing or circular-sequence behavior would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so _subject, _files, and window are already fully documented in the schema. The description only indirectly references the window behavior via 'sliding window profile' and otherwise adds no semantics beyond the structured parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific analysis, GC fraction of the subject, and names two output modes: whole-sequence and sliding-window profile. It is clear what the tool computes, but it does not distinguish itself from siblings such as record_composition or other sequence-composition tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that omitting a window gives whole-sequence GC content and specifying a window gives a sliding-window profile. However, it gives no explicit when-to-use guidance or alternatives, so the agent must infer the tool's place among sibling analysis tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_conformersB
Read-only
Inspect

3D conformers of a small molecule by OpenChemLib's torsion-library generator, each scored and optionally minimized under MMFF94, MMFF94s or MMFF94s+ (whose MMFF94 equals Halgren's OPTIMOL on all 761 validation-suite structures), lowest energy first, as molfiles with every hydrogen; for a 3D molfile also the energy of its own geometry. Energies in kcal/mol.

NameRequiredDescriptionDefault
seedNorandom seed.
countNoat most this many conformers.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
minimiseNominimize each conformer.
moleculeYesthe structure: SMILES or a molfile.
strategyNohow torsion sets are chosen.likelyRandom
force_fieldNothe MMFF94 variant.MMFF94
max_iterationsNominimiser iterations, at most.
energy_toleranceNominimiser energy tolerance.
max_torsion_setsNodistinct torsion sets to try before stopping.
gradient_toleranceNominimiser gradient tolerance.
sixty_degree_stepsNoevery rotatable bond in 60° steps instead of the torsion library's angles.

Output Schema

NameRequiredDescription
summaryYesthe ensemble in words, generated from this run
conformersYeseach conformer: molfile, energy as generated and minimized (kcal/mol)
file_energyYesa 3D molfile's own MMFF94 energy, or why it could not be computed

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine behavioral context beyond that: conformers are scored, ordered lowest-energy-first, emitted as hydrogen-complete molfiles, and energies are in kcal/mol. It does not disclose determinism/seed behavior or runtime/limits, so it is useful but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but it is one dense run-on sentence. The parenthetical about MMFF94 equaling Halgren's OPTIMOL on 761 validation-suite structures is persuasion, not operational information, and does not help an agent invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so returns need not be explained, and the nested _files/_subject structures are described in the schema. Still, for a 13-parameter tool with multiple strategy/force-field choices, the description supplies no decision guidance, leaving an agent to infer selection on its own.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 13 parameters are already documented in the schema and the baseline is 3. The description reinforces a few meanings (optional minimization, MMFF94 variants, kcal/mol units) but adds little syntax or defaulting insight beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('3D conformers of a small molecule') and the method ('OpenChemLib's torsion-library generator'), which clearly distinguishes it from read-only chemistry tools like assess_small_molecule or compare_molecules. It stops short of naming a sibling alternative to route the agent, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no direction on choosing among the strategy or force_field options it exposes. An agent gets no help deciding whether this tool or enumerate_protonation_states / cluster_molecules is the right next step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gene_set_cameraA
Read-only
Inspect

Competitive gene set test that accounts for inter-gene correlation (camera; Wu & Smyth 2012), as limma 3.68.5 runs it: is a set more differentially expressed than the genes outside it, with the variance of its mean statistic inflated by the correlation between its genes instead of treating them as independent. From a count table it fits voom (filterByExpr, TMM, precision weights) and tests the design's coefficient per set (camera); from a ranked statistic it tests that statistic directly (cameraPR). Parametric or rank-based, fixed or per-set estimated correlation, directional or not. Every set is bit-identical to limma in R on filtered pasilla voom and on DESeq2's Wald statistics against every fly GO term.

NameRequiredDescriptionDefault
nameNothe tested coefficient by name; empty is the design's last. Only applies when statistic is voom.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
countsNoa gene-by-sample table of raw read counts, gene IDs in the first column: camera then runs on its voom fit (filterByExpr, TMM, voom weights). Give this or `ranked`. Only applies when statistic is voom.
designNowith `counts`: the design formula, the variable of interest last. Only applies when statistic is voom.~ condition
rankedNoa gene-wise statistic, 'gene statistic' per line (e.g. a DE run's Wald or moderated t). Only applies when statistic is ranked.
samplesNowith `counts`: one row per sample, its name first, then the design's variables. Only applies when statistic is voom.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
contrastNo'factor, numerator, denominator', the denominator being the factor's reference level. Only applies when statistic is voom.
geneSetsYesthe gene sets, as GMT text (MSigDB, GO or WikiPathways exports): one set per line, tab-separated ID, description, then member gene IDs. IDs must be the same kind as the genes'.
minCountNofilterByExpr: minimum count in the smallest group's worth of samples. Only applies when statistic is voom.
useRanksNoa correlation-adjusted Wilcoxon rank-sum test instead of the parametric t on z-scores; robust to a few extreme genes.
fdrCutoffNoa set is called when its BH FDR (its p-value when one set is tested) is at most this.
referenceNoreference level per factor, 'variable=level' separated by commas; a factor not named takes its alphabetically first level. Only applies when statistic is voom.
statisticNoranked: cameraPR on a supplied gene-wise statistic (`ranked`). voom: camera on a voom fit of `counts` and `samples`, each gene's own residuals and weights. Given only `counts`, voom is assumed.ranked
allowNegCorNowith an estimated correlation: let a negative estimate deflate the variance (limma floors it at 0). Only applies when statistic is voom.
directionalNotest up or down against the rest (true), or only whether the set's genes change more in either direction (false, a rank test on |statistic|).
filterByExprNodrop genes too lowly expressed to test (edgeR's filterByExpr) before voom. Only applies when statistic is voom.
interGeneCorNothe fixed inter-gene correlation, limma's default 0.01 (a value most real sets exceed slightly).
minTotalCountNofilterByExpr: minimum total count. Only applies when statistic is voom.
estimateCorrelationNowith `counts`: estimate each set's correlation from the residuals instead of fixing it; the test then uses min(residual df, genes - 2) degrees of freedom. Only applies when statistic is voom.

Output Schema

NameRequiredDescription
termsYesevery set with a member among the tested genes, by p: genes in the set, correlation, direction, p and BH FDR
summaryYesthe mode (voom camera or cameraPR), genes tested, sets supplied and tested, the degrees of freedom, the prior df of the variance squeeze, the settings limma changed
enrichedYesthe sets at or under the FDR cutoff

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive behavior, and the description adds substantial behavioral detail beyond them: voom fitting, filterByExpr, TMM normalization, precision weights, parametric versus rank-based testing, fixed versus estimated correlation, directional testing, and limma-equivalence validation. This gives an agent a clear model of what the tool computes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core method and then covers the two input modes. It is dense but mostly earns its length for a 20-parameter tool, though the final limma-equivalence sentence is more validation detail than operational guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high parameter count, output schema, and annotations, the description supplies enough conceptual context to choose between voom and ranked workflows and to understand the correlation-adjusted test. Remaining details, such as individual parameter defaults and file references, are appropriately left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all 20 parameters are already documented in the schema. The description adds useful conceptual grouping around statistic modes, correlation estimation, and directional testing, but it largely restates semantics the schema already carries in detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific method and resource: a competitive gene set test that accounts for inter-gene correlation, with two explicit operating modes (voom and ranked). This distinguishes it from generic enrichment siblings by emphasizing the correlation-adjusted competitive test.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use the voom versus ranked path based on whether you supply a count table or a ranked statistic, but it does not name or compare against sibling gene set tools such as gene_set_enrichment or gene_set_overrepresentation. The usage context is implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gene_set_enrichmentA
Read-only
Inspect

Preranked gene set enrichment analysis (GSEA; Subramanian et al. 2005) with fgsea's multilevel p-values (Korotkevich et al.), either as clusterProfiler's GSEA() runs it (enrichit 0.2.6, with q-values; or its fixed-count or adaptive sample and permute tests) or as fgsea 1.38 itself runs it (fgseaMultilevel, or fgseaSimple with a permutation count): weighted running-sum enrichment score, normalized ES against size-matched permutations, multilevel Monte Carlo p-values down to eps, adjusted p, log2err, rank at maximum, leading-edge genes. Seeded: a seed reproduces the chosen package's p-values exactly, and every set is bit-identical to that package in R on pasilla's DESeq2 Wald statistics against every fly GO term.

NameRequiredDescriptionDefault
epsNofloor for multilevel p-values; 0 estimates them however small. Only applies when method is multilevel.
seedNoseeds the permutations; the same seed gives the same p-values as the chosen engine in R (fgsea: set.seed(seed) before the call).
npermNofgsea: run fgseaSimple with this many permutations (p-values no smaller than 1/(nperm + 1)); 0 keeps the multilevel estimate. Only applies when engine is fgsea.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
engineNoclusterProfiler: enrichit 0.2.6's GSEA, what clusterProfiler 4.20's GSEA() runs, with q-values. fgsea: fgsea 1.38's own, a different random stream and arithmetic, so the same seed gives fgsea's p-values; BH only, no q-value.clusterProfiler
methodNoclusterProfiler's p-value: multilevel Monte Carlo (fgsea-derived, down to eps); sample: a fixed count of random gene samples of each set's size; permute: that count of relabellings of the whole ranked list (slower: every set is re-scored along every permuted list). The permutation methods score both tails whatever the score type. Only applies when engine is clusterProfiler.multilevel
rankedYesthe ranked list: 'gene statistic' per line (tab, comma or space), e.g. a DE run's Wald statistic; sorted decreasing here if it is not.
maxPermNoadaptive: the most draws any set gets. Only applies when adaptive is true.
minPermNoadaptive: the first batch for every set. Only applies when adaptive is true.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
adaptiveNosample or permute: draw per set in batches from minPerm, doubling while its p-value is at most pvalThreshold, up to maxPerm, instead of a fixed count. Only applies when method is sample or permute.
exponentNoweight of each gene's statistic in the running sum: 0 is the unweighted Kolmogorov-Smirnov form, 1 classic GSEA.
geneSetsYesthe gene sets, as GMT text (MSigDB, GO or WikiPathways exports): one set per line, tab-separated ID, description, then member gene IDs. IDs must be the same kind as the genes'.
maxGSSizeNolargest set tested, counted among the ranked genes.
minGSSizeNosmallest set tested, counted among the ranked genes.
scoreTypeNostd: both tails; pos or neg: one-tailed, for a statistic with one meaningful sign (the multilevel estimate only). Only applies when method is multilevel.std
sampleSizeNomultilevel samples per level (made odd). Only applies when method is multilevel.
nPermSimpleNomultilevel: permutations for the first, simple p-value estimate and the NES. Only applies when method is multilevel.
permutationsNosample or permute: null draws per set (p-values no smaller than 1/(same-side draws + 1)). Only applies when method is sample or permute.
pvalueCutoffNoa set is significant when p and adjusted p are at most this.
pAdjustMethodNomultiple-testing adjustment across the tested sets (R `p.adjust`).BH
pvalThresholdNoadaptive: a set whose p-value rises above this stops drawing. Only applies when adaptive is true.

Output Schema

NameRequiredDescription
termsYesevery set in the size range, by |NES|: ES, NES, p, adjusted p, q-value, log2err, rank at maximum, leading-edge statistics and genes, and the ranks of the set's members
summaryYesranked genes, ties, whether the list was re-sorted, sets supplied and in range, significant sets, q-value route
enrichedYesthe sets passing the p and adjusted-p cutoff
runningScoreYesthe running enrichment score along the ranked list for the top set, with its hits

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/destructive=false and closed-world execution. The description adds genuinely useful behavior: seeded reproducibility that matches the chosen R engine bit-for-bit, the output quantities produced (NES, adjusted p, log2err, rank at max, leading-edge genes), and the statistical machinery differences between engines. It omits runtime/cost expectations for the permutation methods, 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the paragraph is a dense wall of jargon with version numbers (enrichit 0.2.6, fgsea 1.38) and restates parameter details (eps, seed) already in the schema. It is information-dense rather than wasteful, but a reader must parse a very long sentence to reach the actionable content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 22 parameters, an output schema, and annotations present, the description supplies the essential conceptual frame an agent needs: two distinct engines with different p-value machinery, deterministic seeding, and the shape of results. That is sufficient for correct invocation, though a sentence on typical runtime or input-size expectations would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and nearly every parameter already carries a rich description, so the schema does the heavy lifting. The description reinforces a few parameter meanings (eps floor, seed reproducibility, weighting exponent implied by 'weighted running-sum') but adds little beyond what the schema states, making baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: preranked gene set enrichment analysis with fgsea multilevel p-values, implemented via clusterProfiler's GSEA() or fgsea itself. That is far more precise than the title alone. It does not, however, name or differentiate itself from the sibling tools gene_set_overrepresentation or gene_set_camera, so an agent must infer the distinction from the method name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the internal variants (engine, method, adaptive, multilevel vs sample/permute) which implicitly guides parameter choice, but it never states when to choose this tool over gene_set_overrepresentation (preranked input) or gene_set_camera. Usage is implied by the technical framing rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gene_set_overrepresentationA
Read-only
Inspect

Over-representation analysis (ORA): which gene sets hold more of a gene list than chance, by the one-sided hypergeometric test against a background, as clusterProfiler's enricher() runs it (enrichit 0.2.6). Reports gene and background ratios, fold enrichment, odds ratio, z-score, p, adjusted p and Storey q-value per set, and which sets pass both cutoffs. Every tested set is bit-identical to enrichit in R on pasilla's DE genes against every fly GO term.

NameRequiredDescriptionDefault
genesYesthe gene list (e.g. the significant genes of a DE run), one ID per line or separated by commas or spaces.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
weightsNoper-gene sampling weights, 'gene weight' per line (e.g. a DESeq2 run's mean normalized counts, `meanCounts`, or gene lengths): replaces the hypergeometric test with Wallenius' noncentral one (BiasedUrn), each set's odds being its members' mean weight over the rest of the background's, so a set of well-counted or long genes is not called for being easy to detect. Background genes without a weight take the median; weights at or below 0 are lifted to the smallest positive one. Empty is the unweighted test.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
geneSetsYesthe gene sets, as GMT text (MSigDB, GO or WikiPathways exports): one set per line, tab-separated ID, description, then member gene IDs. IDs must be the same kind as the genes'.
universeNothe background: every gene the experiment could have called (e.g. a DE run's tested genes). Empty is every gene any set annotates, clusterProfiler's default.
maxGSSizeNolargest set tested, counted within the background.
minGSSizeNosmallest set tested, counted within the background.
pvalueCutoffNoa set is enriched when p and adjusted p are at most this.
qvalueCutoffNoand its q-value at most this.
forceUniverseNouse `universe` as given instead of intersecting it with the annotated genes.
pAdjustMethodNomultiple-testing adjustment across the tested sets (R `p.adjust`).BH

Output Schema

NameRequiredDescription
termsYesevery tested set, by p: count, set size, gene and background ratios, fold enrichment, odds ratio, z-score, p, adjusted p, q-value, the hit genes
summaryYesinput genes, how many are in the background, the background size, sets supplied, in the size range and tested, and the q-value route
enrichedYesthe sets passing the p, adjusted-p and q cutoffs

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral context: the exact statistical test (one-sided hypergeometric, or Wallenius with weights), the reported metrics (ratios, fold enrichment, odds ratio, z-score, p, adjusted p, Storey q-value), and the claim that results are 'bit-identical to enrichit in R' for a benchmark dataset. It does not contradict 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and method, followed by output details and a reproducibility claim. It is appropriately sized for a complex analysis tool, though the output enumeration and validation sentence are dense; every sentence contributes useful information, but minor tightening could improve flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 parameters, nested objects, output schema present), the description is complete enough for an agent to call it correctly. It explains the statistical method, the required inputs (gene list, gene sets as GMT, background), the output metrics, and the reproducibility guarantee. The output schema and detailed parameter descriptions cover the remaining structured details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters in detail, including defaults and semantics (e.g., weights, universe, maxGSSize). The description does not add parameter-specific meaning beyond what the schema provides; it focuses on method and output. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Over-representation analysis (ORA): which gene sets hold more of a gene list than chance, by the one-sided hypergeometric test against a background'. It also names the exact implementation ('as clusterProfiler's enricher() runs it') and what it reports, which distinguishes it from sibling tools like gene_set_enrichment and gene_set_camera.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the statistical method and output, and mentioning 'as clusterProfiler's enricher() runs it' gives some context. However, it does not explicitly state when to use this tool versus alternatives such as gene_set_enrichment or gene_set_camera, nor does it list exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

genotype_pcaA
Read-only
Inspect

Principal components of a call set's genotypes, the population-structure picture: biallelic sites above a minor-allele count, LD-pruned by sliding windows, scaled per site (Patterson, standard or centring) and decomposed; every sample's coordinates with its population, and the variance each component explains (scikit-allel pca). Validated on 1000 Genomes phase 3 APOL1, all 2,504 samples.

NameRequiredDescriptionDefault
vcfYesthe call set as VCF text (a .vcf, or a .vcf.gz already decompressed); every record's GT is read, ploidy 2.
pruneNodrop sites in LD before the decomposition (locate_unlinked), as scikit-allel's PCA assumes.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
minMacNokeep biallelic sites whose REF and first ALT are each seen at least this many times.
scalerNoper-site scaling before the decomposition: Patterson divides the centred dosage by √(p(1−p)); standard by its standard deviation; center only centres. Values: patterson (Patterson (√(p(1−p)))), standard (Standard deviation), center (Centre only).patterson
groupByNowhich column of the sample table groups the samples; empty is its first grouping column.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
precisionNofloat64, or float16: scikit-allel's own path when handed integer genotypes, which rounds the scaled matrix to half precision. Values: float64 (Double precision), float16 (Half precision (as scikit-allel on integer genotypes)).float64
pruneSizeNopruning window, in sites. Only applies when prune is true.
pruneStepNosites the pruning window advances. Only applies when prune is true.
nComponentsNocomponents to report.
populationsNoa sample table: a header row with a `sample` column and one or more grouping columns (tab-separated, as 1000 Genomes' .panel). Samples it does not list belong to no group.
pruneThresholdNoprune the later site of a pair whose Rogers–Huff r² exceeds this. Only applies when prune is true.

Output Schema

NameRequiredDescription
sitesYeshow many sites qualified, how many pruning kept, and their positions
coordsYesone row per sample: sample, its group, and its coordinate on each component
explainedVarianceYesthe variance each reported component explains, in the data's own units (the eigenvalues)
explainedVarianceRatioYesthe share of variance each reported component explains

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly, non-destructive, closed-world), leaving the description to add substance – and it does: it discloses the full processing chain, the default LD-pruning behaviour and its assumptions, the scaling variants, and even validation against 1000 Genomes phase 3 (2,504 samples). It also previews the returned content (per-sample coordinates with population and variance explained), which the annotations do not.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, method first and validation second, with the core operation front-loaded. The long first sentence is dense but earns its place by summarizing the whole pipeline; there is mild redundancy with the schema's parameter text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter compute tool with an output schema and full annotation coverage, the description is nearly complete – it conveys method, defaults, assumptions and output shape. The only real gap is sibling routing, which is the missing piece an agent needs to pick this over related population-genetics tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 13 parameters in depth (defaults, enums, min/max, scikit-allel rationale). The description restates the same concepts (minor-allele count, LD pruning, scaling) at a high level without adding format, syntax or interaction detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource – principal components of a call set's genotypes, decomposed via scikit-allel PCA – and gives the pipeline (biallelic filtering, LD pruning, per-site scaling). It is unmistakably a dimensionality-reduction / population-structure tool. It does not, however, name or contrast itself with close siblings such as population_ancestry, population_fst or population_site_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternative tool is named despite several overlapping population-genetics siblings. The methodological detail implies the context (PCA for population structure) but the agent must infer when this beats population_ancestry or population_fst.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_construction_historyA
Read-only
Inspect

What a construct was BUILT from: the recorded operations, the molecules they consumed, how many rounds deep the build goes, and which of the 5 sources the record came from. This is the build history, not the edit history — for what CHANGED in a document and when, call get_document_history instead.

NameRequiredDescriptionDefault
limitNoHow many steps to return, oldest first. All of them when omitted.
queryNoFree text over the operation, the recorded command, its info field, the process id and name, and every molecule the step names — the panel’s step filter. Composes with `molecule` rather than replacing it.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNoFile id or name. The focused document when omitted, exactly as the panel.
moleculeNoKeep only the steps that produced or consumed this molecule, by its recorded name — the panel’s graph-node filter. Names that are not in the history are refused with the list of the ones that are.

Output Schema

NameRequiredDescription
depthYeslongest chain of operations from a starting material to the construct — 1 is a single round, and more means it was built on builds
graphYesthe lineage itself: `levels`, the molecule names by round with the starting materials at 0, and `edges`, every parent → product pair. This is the Graph and Lineage tabs’ own derivation, and without it a caller holding `steps` would have to rebuild it from the recorded commands
stepsYesthe recorded operations, oldest first, with their inputs, products and enzymes. A step that records a coordinate also carries `window`: the bounds as the file writes them, the molecule they are an index INTO (never this one), and the intervals of this record they project onto through the map QUEEN writes into it — empty, with a stated reason, when those bases are not in the finished molecule
totalYesrecorded operations in the whole build, before any filter
inputsYesmolecules the history starts from: nothing recorded produced them
originYesthe record this was decoded out of — NOT always the document asked for: a file with no history falls back to the project, and this names what actually answered
sourceYeswhich of the 5 records this came from: the workbench log, a SnapGene .dna reaction graph, a QUEEN build script, an OpenCloning strategy, or an SBOL 2/3 construction record
enzymesYesthe enzymes this build cut with, as the history records them
matchedYeshow many steps the `molecule`/`query` filters kept — the panel prints `matched/total`, and collapsing the two would make "12 of 12" and "12 of 76" the same answer
cautionsYesonly what THIS history earned — a step the decoder could not follow, products a reaction could not have made, or a limitation of the source format. Empty is the healthy case
protocolYesthe same numbered bench-recipe protocol the panel renders and exports
conclusionYesone generated sentence: how much was recorded, over how many rounds, from how many starting materials, and on whose authority. The same `conclusionOf` the panel headlines
derivationYesthe chain behind the answer: this history ← decoder ← read from ← graded against. The last link is absent for a build recorded here, which has no oracle behind it
process_flowYesthe build as named processes: `groups` (the author’s process names, each with its operations in execution order), `operations` (the quinable call, its depth, what it consumed and produced, and its recorded arguments), and `depth`. Absent for a record that carries no re-executable command list — only a QUEEN history does — and `unavailable` with the upstream reason for the one build shape QUEEN cannot draw itself

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful semantic context beyond annotations by specifying that the history covers recorded build operations, consumed molecules, build depth, and source provenance rather than document edits. It does not discuss permissions or side effects, but none are expected for a read-only tool, and the return shape is covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler. The core meaning is front-loaded, and the contrast with edit history is placed immediately after it for disambiguation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only annotations, complete schema descriptions, and an output schema, the description provides enough context for correct selection and invocation. It defines the tool's scope, distinguishes it from the relevant sibling, and does not need to restate parameter or return details already carried by structured fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents limit, query, _files, _subject, document, and molecule in detail. The description does not add syntax or filtering semantics beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it retrieves what a construct was built from, including recorded operations, consumed molecules, build depth, and source provenance. It explicitly distinguishes this from sibling get_document_history, so an agent can select it correctly 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-not condition by contrast: this is build history, not edit history, and it names get_document_history as the alternative for document changes. The routing condition is clear and leaves little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_open_recordA
Read-only
Inspect

Return the plasmid/sequence currently open in the editor. Emits it as a record, so it is the SOURCE node of a pipeline — wire its record into any downstream node's $subject.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
nameYesrecord name
lengthYeslength in bp
recordYesthe open sequence record (subject for downstream nodes)
circularYestopology (true = circular)
sequenceYesthe sequence 5'→3'

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context by explaining that the output is emitted as a `record` and functions as a pipeline source node.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences front-load the operation and then explain the pipeline role. There is no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with full schema coverage, annotations, and an output schema, the description supplies what an agent needs: what is returned and how the result is meant to be used downstream.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the _files and _subject parameters are already fully documented in the schema. The description does not add parameter-specific syntax or semantics beyond the schema, which makes the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: return the plasmid/sequence currently open in the editor. It also distinguishes this from load/fetch-style siblings by framing the result as the editor's active record rather than a database lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the main use case: this is the SOURCE node of a pipeline and its record should be wired into downstream nodes' $subject. It does not explicitly name alternative tools such as get_selection or load_record, so it falls 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.

get_selectionA
Read-only
Inspect

The region selected on the canvas, as its own record. This is what makes a highlighted stretch a pipeline INPUT: wire its record into any node's subject and that step runs on the selection rather than on the whole molecule.

NameRequiredDescriptionDefault
padNoextend the selection by this many bases on each side, clamped to the molecule (or wrapped, on a circular one). In bp.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
reverse_complementNoemit the bottom strand of the selection (what a feature on the minus strand actually reads).

Output Schema

NameRequiredDescription
endYesend on the parent, exclusive
startYes0-based start on the parent molecule
lengthYeslength in bp
recordYesthe selected region as a linear record (subject for downstream nodes)
sequenceYesthe selected bases 5'→3'

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only annotations, it discloses meaningful behavior: the result is a standalone record and using it as a subject narrows a pipeline step to the selected stretch. It does not describe edge cases such as behavior when nothing is selected, but the annotations and output schema already cover safety and return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads what the tool returns, and immediately explains the practical consequence. Every sentence adds useful information with no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with a full input schema and an output schema, the description supplies the essential purpose and pipeline usage context. It leaves minor gaps around no-selection behavior and sibling choice, but nothing critical to invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so pad and reverse_complement are already fully documented in the input schema. The description adds no parameter-specific meaning beyond the schema, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource: the canvas-selected region returned as its own record. It explains the distinctive role of that record as a pipeline input, though it does not explicitly contrast this tool with siblings such as browse_region or get_open_record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete usage pattern: wire the returned record into a node's subject so that the step runs on the selection instead of the whole molecule. It does not state when not to use it or name alternative tools, so it falls short of full when/when-not/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gibson_assembleBInspect

Assemble fragments by terminal homology (Gibson / NEBuilder / In-Fusion, DnaCauldron). Emits the first product as a NEW record for downstream nodes.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_tmNooptional ceiling on the same gate scale. 0 = no constraint. In °C. Advanced.
min_tmNooptional floor on the junction's GATE value (DnaCauldron's naive A/T = 2, G/C = 4 sum, not a nearest-neighbour temperature). 0 = no constraint. In °C. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
topologyNoproduct topology to enumerate. Values: circular (Circular), linear (Linear), both (Both).circular
fragmentsNothe fragments to assemble — wire upstream `record` outputs here, or list library document names/ids.
max_constructsNocap on how many distinct constructs are enumerated, so an ambiguous fragment set cannot run away. Advanced.
include_subjectNoalso include the node's subject as a fragment.
max_homology_bpNolongest terminal homology considered. The bound is EXCLUSIVE, as upstream's own `range(min, max)` is: a maximum of 40 rejects a 40 bp arm. In bp.
min_homology_bpNominimum terminal homology for two ends to join. In bp.
expect_no_unused_partsNotreat a fragment left out of every construct as an error rather than a warning (upstream's own default).
preserve_backbone_originNofor circular products, rotate the origin to the start of the backbone fragment and name the product after it. Advanced.

Output Schema

NameRequiredDescription
errorsYesassembly errors — the structured flaws DnaCauldron's errors spreadsheet is built from
recordYesthe first assembled product, as a record
productsYesevery enumerated product
warningsYesassembly warnings
productCountYesnumber of products (>1 = ambiguous assembly)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a write (readOnlyHint=false) that is non-destructive and closed-world. The description adds two useful facts beyond that: the output is a NEW record (consistent with destructiveHint=false) and only the first product is emitted for downstream nodes. It does not explain ambiguity handling, whether inputs are consumed, or how the enumerated constructs relate to the single emitted product.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the verb and method front-loaded and no filler. Slightly terse given a 12-parameter tool, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the schema documents all 12 parameters including the nested _subject/_files shapes. Still, for a complex assembly tool the description is thin: it never mentions the multi-construct enumeration (max_constructs, topology) that coexists with the 'first product' emission, and gives no guidance on how fragments must be prepared.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself is unusually rich (exclusive max_homology_bp bound, DnaCauldron gate scale for min/max_tm, fragment wiring notes). The description contributes nothing parameter-specific, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Assemble fragments by terminal homology' — and names the concrete methods (Gibson / NEBuilder / In-Fusion, DnaCauldron), which implicitly separates it from golden_gate_assemble and ligate_fragments. It stops short of naming siblings explicitly, so an agent must still infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to choose this over golden_gate_assemble, recombine, fusion_pcr, or restriction_ligate, and no prerequisites (e.g. that fragments must already carry matching terminal homology arms, or that design_gibson_primers precedes it). Only the method list hints at the appropriate scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

golden_gate_assembleAInspect

Assemble parts with a Type-IIS enzyme (Golden Gate / MoClo, DnaCauldron). Emits the first construct as a NEW record for downstream nodes.

NameRequiredDescriptionDefault
partsNothe parts to assemble — wire upstream `record` outputs here, or list library document names/ids.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNoType-IIS enzyme, or leave unset to let DnaCauldron pick one.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
connectorsNocandidate bridging LINKERS, a library distinct from `parts`. The engine reaches for one as a FALLBACK, where the parts alone do not close a construct, and names the ones it added in `warnings`; a candidate it does not need is silently unused.
max_constructsNocap on enumerated constructs. Advanced.
include_subjectNoalso include the node's subject as a part.
expected_constructsNoexpect exactly this many constructs and fail when the count differs. Leave unset to enumerate every valid one.
expect_no_unused_partsNotreat a part the assembly did not consume as an error, which is DnaCauldron's own default.

Output Schema

NameRequiredDescription
enzymeYesthe Type-IIS enzyme actually used
errorsYesassembly errors — the structured flaws DnaCauldron's errors spreadsheet is built from
recordYesthe first assembled construct, as a record
productsYesevery enumerated construct
warningsYesassembly warnings
overhangsYesthe first construct’s junction overhangs, in assembly order: wire this into score_overhang_fidelity
productCountYesnumber of constructs

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context by stating it 'Emits the first construct as a NEW record for downstream nodes,' clarifying the write is constructive rather than destructive. It does not cover warnings, fallback linker behavior, or failure modes, which remain in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no waste. The first sentence front-loads purpose and method; the second supplies the output side effect that matters for downstream nodes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex nine-parameter assembly tool, but schema coverage is 100%, an output schema exists, and annotations cover safety. The description supplies purpose and output record creation, though it omits explicit sibling routing and when-to-use guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all nine parameters already carry documentation and constraints. The description does not add parameter syntax, defaults, or format details beyond what the schema provides, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Assemble'), resource ('parts'), and method (Type-IIS enzyme / Golden Gate / MoClo, DnaCauldron), plus the output behavior. This distinguishes it from sibling assembly tools such as gibson_assemble, recombine, and restriction_ligate by enzyme class.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never explicitly says when to use this tool versus alternatives, nor when not to use it. The enzyme class implies a Golden Gate context, but there is no routing to or away from gibson_assemble, restriction_ligate, recombine, or the upstream check_golden_gate_parts / downstream verify_construct tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graft_antibody_cdrsA
Read-only
Inspect

Humanize an antibody variable domain by CDR grafting: find the closest human germline V and J, merge them into an acceptor framework, and put the parental CDRs onto it. The classical humanization route, and the counterpart to humanize_antibody's language model. Reproduces abnumber 0.4.4 over every antibody chain of ANARCI's PDB benchmark.

NameRequiredDescriptionDefault
topNograft onto the n-th closest germline instead of the closest (0-based).
jGeneNouse this human J germline instead of the closest one.
vGeneNouse this human V germline instead of the closest one (a family, gene or allele: IGHV1, IGHV1-18, IGHV1-18*01).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
domainNowhich variable domain to graft when the sequence holds several (0-based, in sequence order).
proteinYesthe protein sequence (one-letter amino acids); the variable domains in it are found and numbered first.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cdrDefinitionNowhich CDR definition decides what is grafted from the parental antibody. Values: imgt (IMGT), kabat (Kabat), chothia (Chothia), north (North).imgt
rankByFrameworksNorank germlines on framework identity alone, ignoring the CDRs.
backmutateVernierNokeep the parental residues at the Kabat Vernier positions, the framework residues that support the CDR loops.

Output Schema

NameRequiredDescription
graftedYesthe grafted variable domain sequence
germlineYesthe V and J alleles the frameworks came from
identityYespercent identity of the grafted domain to the parental one
candidatesYesthe closest human V and J germlines, best first

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds meaningful behavioral context: it discloses the algorithmic approach and states that it 'reproduces abnumber 0.4.4 over every antibody chain of ANARCI's PDB benchmark,' which signals determinism and validated reproducibility. It does not describe failure behavior or performance characteristics, but the output schema covers return values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero filler: the first sentence front-loads the core operation and its steps, the second routes against the sibling tool, and the third provides validation context. Every sentence earns its place and the most important information comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with nested objects, full schema coverage, and an output schema, the description supplies the essential process overview, the key sibling distinction, and a reproducibility guarantee. All parameter details and return values are handled by structured fields, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every parameter (top, vGene, jGene, domain, cdrDefinition, rankByFrameworks, backmutateVernier, protein, _subject, _files) is documented in the schema itself. The description mentions the default germline-finding and CDR-grafting behavior but adds no syntax or semantics beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Humanize an antibody variable domain by CDR grafting', then enumerates the concrete steps (find closest human germline V and J, merge acceptor framework, graft parental CDRs). It explicitly distinguishes itself from the sibling humanize_antibody by calling itself 'the classical humanization route, and the counterpart to humanize_antibody's language model.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the primary alternative, humanize_antibody, and specifies the distinction ('classical humanization route' vs. language model). However, it does not give explicit conditions for when to prefer one over the other beyond that high-level characterization, and it offers no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

history_protocolB
Read-only
Inspect

Render a construct's build history into a numbered bench-recipe protocol.

NameRequiredDescriptionDefault
rootYesa history-node tree.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
protocolYesnumbered bench-recipe protocol text

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered without the description's help. The description only adds that the output is a "numbered bench-recipe protocol," a light framing detail; it says nothing about permissions, input tree requirements, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, and the key action and output are front-loaded. It is efficient, though its brevity borders on under-specification for a tool with nested object inputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, the tool takes a nested "history-node tree" and record references, and the description offers no help on obtaining that tree or relating the tool to its history-oriented siblings, leaving a meaningful gap for a fairly complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents root, _files, and _subject in detail. The description contributes no additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ("Render"), a resource ("a construct's build history"), and a concrete output form ("numbered bench-recipe protocol"), so the transformation is clear. It does not, however, distinguish itself from close siblings like get_construction_history or build_assembly_report, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative named. Given that get_construction_history and build_assembly_report exist in the sibling set, the absence of any routing guidance leaves the agent to guess which history-related tool to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanize_antibodyA
Read-only
Inspect

Humanize an antibody variable domain with Sapiens, the antibody language model behind BioPhi: score every position against human repertoires, take the highest-scoring residue in the frameworks, and keep the parental CDRs (and optionally the Kabat Vernier zone). Reports every mutation, and what the model would change next. Validated against the published PyTorch model on every chain of ANARCI's PDB benchmark.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
domainNowhich variable domain to humanize when the sequence holds several (0-based, in sequence order).
proteinYesthe protein sequence (one-letter amino acids); the variable domains in it are found and numbered first.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
iterationsNoSapiens passes, each re-scoring the previous output (BioPhi's default 1).
humanizeCdrsNohumanize the CDRs too instead of grafting the parental ones back (raises the risk of losing binding).
cdrDefinitionNowhich CDR definition marks the residues kept from the parental antibody. Values: imgt (IMGT), kabat (Kabat), chothia (Chothia), north (North).imgt
backmutateVernierNoalso keep the parental residues at the Kabat Vernier positions, which support the CDR loops.

Output Schema

NameRequiredDescription
identityYespercent identity of the humanized domain to the parental one
humanizedYesthe humanized variable domain sequence
mutationsYeseach change: 0-based index in the domain, IMGT position, region, parental and humanized residue, and the model's probability for each
mutationCountYesnumber of positions changed

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a read-only, non-destructive, closed-world operation. The description adds meaningful behavioral context beyond that: it discloses the iterative scoring approach, that parental CDRs are kept by default, that a Kabat Vernier option exists, and that the output reports every mutation plus the next model-proposed changes. It also cites validation against the published PyTorch model and ANARCI's PDB benchmark, which helps the agent trust the behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences and front-loads the core action and algorithm. The second and third sentences add output-reporting and validation context without wasting words, though the validation sentence is somewhat promotional relative to invocation needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, an output schema, and annotations, the description covers the essential mechanism, defaults around CDR preservation, and what the tool reports. It does not need to restate return values, but it could more explicitly say when this humanization approach is preferable to alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and each parameter already carries a description, so the baseline is 3. The description adds conceptual meaning around frameworks, parental CDRs, and the Kabat Vernier zone, but it does not explain parameters such as domain selection, iterations, or the cdrDefinition enum beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: humanize an antibody variable domain using Sapiens. It explains the mechanism (score positions against human repertoires, keep parental CDRs, optional Vernier preservation), which clearly distinguishes it from grafting-only siblings such as graft_antibody_cdrs, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool's use case through its detailed humanization workflow, but it gives no explicit when-to-use, when-not-to-use, or sibling comparison guidance. An agent can infer this is the humanization tool rather than a numbering or grafting tool, but must make that inference without direct routing advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

infer_proteinsB
Read-only
Inspect

Protein inference from peptide-spectrum matches (validated against OpenMS BasicProteinInferenceAlgorithm on PXD000001): maps each peptide to the protein database, keeps the best match per spectrum, scores each protein by aggregating its peptides' best scores, reports the proteins its evidence cannot tell apart as indistinguishable groups, and the percent of each sequence the matches cover.

NameRequiredDescriptionDefault
psmsYesthe matches as a table with a header row naming spectrum, peptide, charge and score (tab- or comma-separated); peptides are ProForma.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
databaseYesthe protein database searched, as FASTA; the accession is the header up to the first space.
coverageOfNothe accession whose sequence coverage is drawn; empty draws the first protein of the best group, as the Coverage tab opens on.
aggregationNohow a protein's peptide scores combine: best one, mean (sum over count), or product.best
minPeptidesNoreport only proteins with at least this many evidences (0 reports every matched protein).
scoreColumnNowhich column holds the score inference uses, when the table carries several (OpenMS score_type); a column named pep or q-value sets its own direction.score
ilEquivalentNotreat isoleucine and leucine (and a database J) as the same residue when mapping peptides.
scoresArePepNothe scores are posterior error probabilities: matches compete lowest first, and each protein combines 1 − PEP into a posterior probability (higher is better); implies higherIsBetter false.
higherIsBetterNotrue for scores like HyperScore; false for e-values, q-values and PEPs.
useSharedPeptidesNolet a peptide that maps to several proteins count for each of them.
maxAmbiguousResiduesNohow many ambiguous database residues (B, J, Z, X) one peptide match may resolve.
greedyGroupResolutionNorazor peptides: give each shared peptide only to its best-scoring protein or group (ties to the one with more matches) and drop proteins left with no peptide of their own.
chargeVariantsSeparateNocount each charge state of a peptide as its own evidence.
peptideProteinResolutionNoresolve shared peptides between indistinguishable groups: in each connected set of groups the highest-probability group (then the one with more peptides) takes its peptides from the rest, and each set is reported as an ambiguity group; not combined with greedyGroupResolution.
modificationVariantsSeparateNocount each modified form of a peptide as its own evidence.

Output Schema

NameRequiredDescription
countYesproteins reported
groupsYesindistinguishable protein groups, best first: probability (the best member score) and accessions
methodYesthe inference algorithm and mapping that produced these proteins, named
proteinsYesone row per protein: accession, score, evidences counted, sequence coverage (%)
coverageMapYesone protein's sequence with the peptides that identified it laid under the residues they cover, unique in blue and shared in orange: the Coverage tab's picture of `coverageOf`
scoreColumnYesthe column the match scores were read from, which decides whether higher or lower is better
ambiguityGroupsYeswith peptide–protein resolution: one group per connected set of groups, best group first, with the best probability. Null when that resolution was not asked for, because an empty list would read as a dataset with no ambiguity in it

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the exact algorithm validated against OpenMS BasicProteinInferenceAlgorithm on PXD000001, the best-match-per-spectrum rule, and that results include indistinguishable groups and per-sequence coverage. It does not disclose output shape beyond that or any computational cost/ordering concerns, so it sits at adequate rather than rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence, but it is front-loaded with the purpose before the pipeline details, so the agent gets the core identity immediately. It is long yet every clause adds substantive algorithm information; no filler or restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 17 parameters, an output schema, and full schema coverage, the description supplies the necessary mental model: inputs (PSMs + FASTA database), processing rules, and what the report contains (indistinguishable groups, coverage). The one missing piece for an agent choosing correctly is differentiation from bayesian_protein_inference, which is a real but bounded gap given how rich the structured metadata already is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 17 parameters are fully documented in structured fields and the baseline of 3 applies. The description only loosely reinforces one of them ('aggregating its peptides' best scores'), which describes the default aggregation mode rather than adding semantics beyond the schema; the many tuning flags (greedyGroupResolution, peptideProteinResolution, ilEquivalent, etc.) are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Protein inference from peptide-spectrum matches') and enumerates the concrete steps: peptide-to-protein mapping, best match per spectrum, score aggregation, indistinguishable groups, and coverage. It is clear what the tool does, but it never acknowledges the sibling bayesian_protein_inference, so an agent cannot fully disambiguate the two inference tools from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative (bayesian_protein_inference) that shares the protein-inference purpose. Usage is only implied by the phrase 'protein inference from peptide-spectrum matches', leaving the agent to infer selection criteria from the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

isotope_envelopeA
Read-only
Inspect

Coarse isotope pattern of a peptide or of an elemental formula (C29H31N7O, as a compound's formula reads): the relative heights and masses of its M, M+1, M+2 … peaks as an instrument that does not resolve isotopic fine structure sees them, computed by per-element convolution from natural abundances (validated against OpenMS).

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
chargeNoprotons added; masses then include them (divide by the charge for m/z).
formulaNoelemental formula of a neutral compound (C29H31N7O; isotopes as C[13]); give this or `sequence`.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNopeptide, plain one-letter residues; give this or `formula`.
maxIsotopeNopeaks to keep (M counts as one); 0 keeps every peak.

Output Schema

NameRequiredDescription
peaksYesone row per peak: isotope index, mass, relative abundance (sums to 1)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context beyond annotations: a per-element convolution method, natural-abundance basis, and validation against OpenMS.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler, and the key resource is stated first. It is dense with parentheticals, which slightly reduces structural clarity, but every clause contributes relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a full output schema and 100% schema description coverage, so return values and parameters are already covered. The description explains the output nature and computation method, but omits explicit guidance about record-based inputs and when to choose this over sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions peptide and elemental formula inputs with an example formula, but adds no meaning beyond what the schema already says about sequence, formula, charge, and maxIsotope.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and output: the relative heights and masses of M, M+1, M+2 peaks for a peptide or elemental formula. It distinguishes the result from fine-structure isotopic patterns, but does not explicitly name sibling tools such as isotopic_composition or peptide_mass to sharpen the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'as an instrument that does not resolve isotopic fine structure sees them' implies a usage context for low-resolution isotope patterns, and the formula/peptide inputs are named. However, it gives no explicit when-to-use conditions versus alternatives, so the guidance remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

isotopic_compositionB
Read-only
Inspect

The most probable isotopic composition of a peptide (e.g. how many 13C atoms it most likely carries) and that composition's relative abundance, from natural isotope abundances (validated against pyteomics).

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceYespeptide, plain one-letter residues.

Output Schema

NameRequiredDescription
abundanceYesrelative abundance of that composition (0-1)
compositionYeselement -> isotope mass number -> atom count

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description usefully adds that results derive from natural isotope abundances and are validated against pyteomics, but says nothing about determinism, coverage limits, or how the relative abundance is normalized.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the core result stated first and a clarifying example in parentheses. The trailing '(validated against pyteomics)' is a minor trust signal that slightly dilutes an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no prose, and the description conveys what is computed. Still, for a tool sitting next to isotope_envelope it omits the one piece of context an agent most needs: when this composition tool should be chosen over the envelope tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the sequence parameter ('peptide, plain one-letter residues') is already documented in the schema. The description adds the domain word 'peptide' but no format, length, or modification-handling detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific computation and resource: the most probable isotopic composition of a peptide plus its relative abundance, with a concrete example (how many 13C atoms). However it never distinguishes itself from the close sibling isotope_envelope, so an agent cannot confidently route between the two from this text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative isotope_envelope or peptide_mass. The agent is left to infer that this is the 'most probable composition' variant versus an envelope variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ligate_fragmentsAInspect

Ligate fragments by their overhangs (pydna ligation_assembly) — sticky, optionally blunt. Each input may be digested by its own enzymes first, which is the digest → ligate hand-off. Emits the first product as a NEW record.

NameRequiredDescriptionDefault
bluntNoallow blunt-end joins as well as sticky.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesNodigest every input with these enzymes before ligating. Left unset, the run uses your active enzyme collection.
fill_inNopositional booleans: fill that input's 5' overhangs with Klenow after its digest, so its cut ends join blunt (needs `blunt`). Each join then reports the bases the fill-in added. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
fragmentsNothe fragments to ligate — wire upstream `record` outputs here, or name library documents.
end_originsNowhat MADE each input's ends, positionally — this fixes the 5'-phosphate before any treatment. Leave empty for `unspecified`, which is treated as phosphorylated and reproduces a run with no end chemistry at all. Advanced.
circular_onlyNoreport only circular products.
end_treatmentsNothe phosphatase or kinase applied to each input AFTER it was made, positionally. Dephosphorylating the vector is what stops it self-ligating; a junction with no 5'-phosphate on either strand forms no bond and the product is dropped. Advanced.
include_subjectNoalso include the node's subject as a fragment.
fragment_indicesNowhich band to take from each input's digest, positionally (0 = first fragment). Leave empty to use every fragment — which frequently yields no product, exactly as at the bench.
allow_partial_overlapNoallow partially overlapping sticky ends. Advanced.

Output Schema

NameRequiredDescription
layoutYeswhere each piece and join sits ON the product: the spans the map draws
recordYesthe first ligation product, as a record
productsYesevery product
junctionsYesthe junctions formed, with the overhang each was made by
productCountYesnumber of products (>1 = ambiguous ligation)
nickedJunctionsYesindices of junctions left NICKED by a missing 5'-phosphate on one strand — the product still transforms and is repaired in vivo. Empty when every junction sealed

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructiveHint=false and openWorld=false, so the mutation/safety profile is partly covered. The description adds genuine value by stating the digest→ligate hand-off behavior and that it 'emits the first product as a NEW record', clarifying output cardinality and that inputs are untouched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with the core ligation action front-loaded, then the digest hand-off, then the output. No filler, though the parenthetical '(pydna ligation_assembly)' and 'NEW record' emphasis are slightly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter advanced tool, the description covers the essential mental model (overhangs, per-input digestion, new-record output) and an output schema plus 100%-covered params carry the rest. It could say more about the pipeline defaults (e.g. circular_only) but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters, including the advanced ones (fill_in, end_treatments, end_origins). The description reinforces the overhang/blunt concept and the digest-first behavior but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (ligate fragments) and the mechanism (overhang-based ligation, sticky/optionally blunt, pydna ligation_assembly). It is clear what the tool does, but it does not explicitly differentiate itself from close siblings such as restriction_ligate, gibson_assemble, or golden_gate_assemble.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the 'digest → ligate hand-off' framing, telling the agent this follows a digest step and can fold per-input digestion into the run. However, it gives no explicit when-to-use/when-not guidance and never names an alternative assembly tool (Gibson, Golden Gate) to route between.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ligation_independent_cloneAInspect

Join fragments without a ligase by one of the five named methods — LIC, SLIC, In-Fusion, CPEC or USER (pydna). Each method's chemistry decides which end survives, and its own authority states the arm it needs.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
arm_ntNohomology per junction. Left unset, the method's own recommended arm is used (In-Fusion widens its own for more than one insert). In nt.
methodNothe cloning method, which decides the chemistry: LIC and SLIC and In-Fusion chew 3' ends, CPEC removes nothing, USER excises a uracil. Values: lic (LIC), slic (SLIC), in-fusion (In-Fusion), cpec (CPEC), user (USER).in-fusion
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
fragmentsNothe fragments to join — wire upstream `record` outputs here, or name library documents.
circular_onlyNoreport only circular products.
include_subjectNoalso include the node's subject as a fragment.

Output Schema

NameRequiredDescription
armYesthe homology arm the run used
recordYesthe first product, as a record
summaryYeswhat the reaction gave, naming the method and its chemistry
productsYesevery product
armVerdictYeswhether that arm is one the method's authority stands behind, in its own words
productCountYesnumber of products (>1 = ambiguous)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (non-read-only, non-destructive, closed-world), so the bar is lower. The description still adds real behavior: method chemistry determines which end is chewed (LIC/SLIC/In-Fusion chew 3', CPEC removes nothing, USER excises uracil) and that the method governs the default arm length — context an agent could not get 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb, zero padding. The second sentence is slightly cryptic ("its own authority states the arm it needs") but still earns its place by explaining method-driven defaults.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema and annotations are present and rich, and the description covers purpose plus method chemistry. It omits practical framing such as requiring fragments/subject and what the product set looks like, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter including the method enum and arm_nt default. The description only obliquely reinforces this ("its own authority states the arm it needs") without adding concrete semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Join fragments without a ligase") and enumerates the five supported methods, which separates it from the ligase-based siblings ligate_fragments and restriction_ligate. It stops short of naming those siblings, so differentiation requires the agent to infer it from "without a ligase".

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "without a ligase" implies when this tool applies versus Gibson/ligation, but there is no explicit when-to-use statement, no prerequisite (e.g. homology arms must be added), and no named alternative. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkage_disequilibriumA
Read-only
Inspect

Linkage disequilibrium between every pair of biallelic sites of a call set: the dosage correlation r of Rogers and Huff (scikit-allel), or haplotype r² and D′ from the maximum-likelihood two-locus haplotype frequencies (PLINK 1.9 --r2 dprime-signed), plus LD pruning by sliding windows (scikit-allel locate_unlinked). Validated on every pair of 1000 Genomes phase 3 APOL1 sites.

NameRequiredDescriptionDefault
endNolast position (1-based) of the window; 0 is the last site.
vcfYesthe call set as VCF text (a .vcf, or a .vcf.gz already decompressed); every record's GT is read, ploidy 2.
groupNocompute over this group's samples only; empty is every sample.
startNofirst position (1-based) of the window; 0 is the first site.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
minMacNokeep sites where REF and the first ALT are each seen at least this many times (scikit-allel is_biallelic_01 min_mac).
groupByNowhich column of the sample table groups the samples; empty is its first grouping column.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
maxSitesNorefuse more sites than this: the pair count grows with its square.
estimatorNorogersHuff: r between alt-allele dosages, no phasing (scikit-allel). haplotype: r² and D′ from the maximum-likelihood haplotype frequencies (PLINK 1.9). Values: rogersHuff (Rogers–Huff r (genotype dosages)), haplotype (Haplotype r² and D′ (maximum likelihood)).rogersHuff
pruneSizeNoLD pruning window, in sites (locate_unlinked size).
pruneStepNosites the pruning window advances (locate_unlinked step).
populationsNoa sample table: a header row with a `sample` column and one or more grouping columns (tab-separated, as 1000 Genomes' .panel). Samples it does not list belong to no group.
pruneThresholdNoprune the later site of a pair whose Rogers–Huff r² exceeds this (locate_unlinked threshold).

Output Schema

NameRequiredDescription
pairsYescondensed upper triangle, pair (i, j > i) in row order: r (rogersHuff) or [r², D′] (haplotype), null where a site is monomorphic among the samples called at both
sitesYesthe sites compared, in order: index into the call set, chrom, pos, ref, alt, and whether pruning kept it
summaryYessites, pairs, mean r², pairs at r² ≥ 0.8, pruning kept, and the strongest pairs

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that rogersHuff requires no phasing and that results were validated against 1000 Genomes phase 3 APOL1 sites, but most remaining behavior (site-count refusal, ploidy, window semantics) is restated from the schema rather than new disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the primary purpose front-loaded, followed by the two computational modes and the validation note. Zero filler, though the run-on structure with tool version citations (scikit-allel, PLINK 1.9) makes it slightly harder to scan than a segmented description would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the schema documents all 14 parameters, so the description need not cover return values or window/group semantics. It adequately answers what the tool computes and which algorithmic path it takes; the only gap is the absence of guidance on the pruning workflow relative to plain LD computation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains every parameter including the estimator enum and pruning window defaults. The description's estimator gloss ('r between alt-allele dosages, no phasing') largely duplicates the enum description, adding only limited interpretive value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause names a specific computation ('Linkage disequilibrium between every pair of biallelic sites of a call set') and then enumerates the two estimator families and the pruning mode. It is easily separable from siblings like population_fst, population_site_stats or genotype_pca, which also operate on call sets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the estimator split (dosage r with no phasing vs. ML haplotype r²/D′), which helps an agent pick a mode, but there is no explicit 'use this when / not when' and no named alternative tool for the same task. The pruning functionality is mentioned without saying when an agent should want it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_databasesA
Read-only
Inspect

The authoritative databases available, with what each one covers, whether it is reachable from the browser, and any license or coverage caveat. Call this before searching if unsure which source answers a question.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
domainNorestrict to one subject area (all areas when unset).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many authorities the filter left
sourcesYesevery authority in the requested domain: its id, what it covers, its measured browser transport verdict, and any license or coverage caveat

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a read-only, non-destructive, closed-world operation, so the safety profile is covered. The description adds useful content context—authoritative sources, browser reachability, license caveats—but does not disclose operational traits like pagination, auth requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both earning their place. The first front-loads what the tool returns, and the second front-loads the usage condition, with no redundant restatement of the tool name or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values do not need explanation here. The description covers purpose and usage well for a catalog-style tool, though it omits any mention of the domain filter, leaving that entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema itself fully documents the parameters, including the domain enum and the nested _subject object. The description adds no additional parameter meaning, which yields the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource—authoritative databases—and enumerates exactly what it returns for each: coverage, browser reachability, and license/coverage caveats. The second sentence explicitly distinguishes it from search/query siblings by positioning it as the pre-search source-selection step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: 'Call this before searching if unsure which source answers a question.' That names the trigger condition well, but it does not explicitly name alternative tools or state when not to call it, which keeps 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.

list_experimentsA
Read-only
Inspect

Your lab-notebook entries, newest first — id, title, tags, collection, when they changed, and the @plasmid / !action / &gel cross-references each one names. Filter by a tag, by collection, or by text in the title and body, so a run can find the entry it is continuing instead of starting a second one about the same experiment.

NameRequiredDescriptionDefault
tagNoonly entries carrying this tag.
limitNohow many entries to return, newest first.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
searchNomatch on title or body text, case-insensitively. Left unset, every entry is listed.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
collectionNoonly entries filed in this collection.

Output Schema

NameRequiredDescription
countYeshow many matched — branch on this rather than counting the array
totalYeshow many entries the notebook holds in all, so a filter that matched nothing can say whether the notebook is empty or the filter was wrong
entriesYesthe matching entries: id, title, tags, collection, created_at, updated_at, the three cross-reference lists and the body length. The BODY itself is not here — a notebook is long and a listing is for finding, so read one with the id this gives you
collectionsYesevery collection you have, with how many entries it holds

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds ordering (newest first) and the shape of cross-references (@plasmid / !action / &gel), which is useful, but the enumerated return fields largely duplicate the output schema and it says nothing about permissions, pagination behavior, or result-size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the identity of the resource and its ordering before moving to filtering. The second sentence is long and carries both the filter list and the motivation, but each clause earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and annotations cover the safety profile. It covers purpose, ordering, and filtering well; the gaps are the undocumented _files/_subject project-reference parameters and any statement about how filters combine, which for a 6-parameter tool leaves a small hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so tag, collection, search, and limit are already fully documented; baseline is 3. The description restates the three filter parameters and notes search matches title or body, but adds no information about whether filters compose (AND vs OR) or about the _files/_subject parameters, which are entirely absent from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list lab-notebook entries), plus scope details: ordering (newest first), the fields returned (id, title, tags, collection, modified time, cross-references), and the three filter axes. An agent can immediately tell this is the read side of the experiment notebook, distinct from the write-side sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context — 'so a run can find the entry it is continuing instead of starting a second one about the same experiment' — which is genuine when-to-use guidance and implicitly steers away from creating a duplicate entry. It never names the alternative tool (e.g. record_experiment) or states exclusions explicitly, so it falls 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.

list_libraryA
Read-only
Inspect

List the project's sequence documents (id, name, length, topology, kind).

NameRequiredDescriptionDefault
kindNorestrict to one document kind (all kinds when unset). Kind is derived from the record itself — `amplicon` is provenance, not a file property, so documents read from disk are never classified as one.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
idsYesjust the entry ids, in the same order — the list to scatter a per-document step over
countYesnumber of entries
itemsYesthe library entries
namesYesjust the entry names, in the same order

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile needs no restating. The description adds only the returned field list, which the existing output schema already carries, so it contributes little behavioral context (no filtering semantics, no mention that unset kind returns all kinds).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the resource comes first and the enumerated return fields are compact. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations plus a fully documented 3-parameter schema carry the rest. The only gap is the absence of any filtering guidance for the kind parameter in the description, which is minor given the schema's own detailed enum note.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself explains the kind enum, including the subtle 'amplicon is provenance' nuance and the _files/_subject record shape. The description adds no parameter information at all, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus resource ('the project's sequence documents'), with the returned fields enumerated (id, name, length, topology, kind). It implicitly separates itself from list_traces/list_samples by scoping to sequence documents, but never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent can infer this enumerates a project's sequence documents, but there is no statement of when to prefer it over search_records, get_open_record, or load_record, and no exclusions. Minimum-viable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_research_runsA
Read-only
Inspect

List research runs without running anything: the runs this project holds (in the app), or the run files given (runs, which is how an HTTP or MCP caller lists the files it kept). For each run: whether its seal holds, its id, how many hypotheses it registered and how many are supported, not supported or without evidence, how many a resume would run, how many inputs it pins, and what resuming would do. A file whose seal fails is listed as refused with the reason, never dropped. Hand one to research_run_status for its decisions, or to resume_research_run.

NameRequiredDescriptionDefault
runsNothe run files to list; in the app, left unset, the research runs this project holds.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
runsYesone row per run whose seal holds: id, hypotheses, supported, not supported, without evidence, pending, settled, canceled, inputs pinned and the next action
countYeshow many runs opened under their seal
refusedYeseach file whose seal failed, by position, with the reason

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior — a failed seal is reported as 'refused with the reason, never dropped' — but it largely enumerates return fields that an output schema already carries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and formatted so the mode distinction and the refusal behavior are easy to extract. It is dense and slightly run-on with heavy backticking, but every sentence contributes information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not detail return values, yet it usefully covers modes, failure handling for broken seals, and next-step routing. The unexplained `_files`/`_subject` framework parameters are the only loose end, and those appear boilerplate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reiterates the meaning of `runs` (unset = project runs in the app, provided = caller's files) but that is already stated in the schema, and `_files`/`_subject` receive no extra meaning from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List research runs') and immediately distinguishes it from execution ('without running anything'). It also separates the two listing modes — project-held runs versus caller-supplied run files — and names the sibling tools (research_run_status, resume_research_run) an agent might otherwise confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use context ('without running anything', HTTP/MCP caller listing kept files) and explicitly routes the agent forward to research_run_status for decisions or resume_research_run to continue. It stops short of stating exclusions against other list_* siblings, so it is strong rather than exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_samplesA
Read-only
Inspect

Browse the bundled sample library: the real bio files a new project can start from (GenBank and SnapGene plasmids, FASTA sets, alignments, Sanger traces, structures, variant calls and more), each with its id, format and size, and its archive provenance where the corpus records one. This is the headless form of starting a project from a sample: pass an id as a _subject or _files entry's sample and the file is read exactly as the lobby opens it.

NameRequiredDescriptionDefault
kindNorestrict to one importer kind (sequence, msa, trace, structure, variants, alignment, tabular, …). Each entry reports its own, so the vocabulary is whatever the library holds.
limitNomost entries to return; `total` says how many matched.
queryNowords that must all appear in the sample’s id, name, category or format label (case-insensitive), e.g. "pUC", "genbank plasmid", "ab1". Empty lists everything.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
idsYesjust the ids, in the same order — the list to scatter a per-sample step over
totalYeshow many entries matched before `limit` was applied
samplesYesthe matching entries: id, name, category, format, label, kind, size and provenance when recorded

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds useful behavioral context (entries carry id/format/size plus archive provenance 'where the corpus records one', and ids are replayable downstream), but nothing about ordering, pagination behavior, or corpus size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what the library contains, then the downstream usage. The parenthetical enumeration is long but informative; only minor trimming ('and more') would be possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full annotation coverage, and 100% parameter coverage, the description only needs to frame the tool's role — which it does by tying it to the lobby/headless workflow. Complete enough; loading/inference caveats are not needed for a pure read-listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the _subject.sample param already documents that it takes 'an id from list_samples', so the description largely restates the schema link rather than adding new syntax or format detail. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb (browse) and resource (bundled sample library), enumerates concrete contents (GenBank/SnapGene plasmids, FASTA, alignments, traces, structures, variant calls), and implicitly separates itself from list_library/list_traces by scoping to the bundled sample corpus. An agent can immediately tell what this returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the intended flow clearly: it is the 'headless form of starting a project from a sample', and a returned id is meant to be passed as a `_subject`/`_files` `sample`. It gives strong context but no explicit when-not-to-use or named alternative (e.g., list_library, list_traces).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sgrna_scaffoldsB
Read-only
Inspect

Every sgRNA scaffold this workbench has sourced, with the nucleases each covers and the publication it comes from. A scaffold not listed here is one we do not have — the list is what we ship, not what exists.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many scaffolds are shipped
scaffoldsYeseach scaffold: id, name, sequence, length, which side of the spacer it sits, the nucleases it covers, its citation and accessions

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety and closed-world behavior are covered. The description adds a genuine nuance — the list is a curated shipping catalog, not an exhaustive registry of what exists — but says nothing about pagination, filtering, or response shape beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the payload and followed by the scope caveat. The second sentence is slightly editorial but earns its place by preventing the agent from assuming an unlisted scaffold exists elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description already names the salient fields (nucleases, publication). For a zero-required-parameter catalog tool this is nearly complete; the only gap is not explaining the presence of the _subject/_files record parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. However, the description never addresses the two parameters (_files, _subject), and since both are optional record-selection inputs on a pure listing tool, an agent could reasonably wonder whether filtering is expected; the description's 'every sgRNA scaffold' phrasing only implicitly signals no filtering.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool returns: every sgRNA scaffold the workbench has sourced, annotated with the nucleases each covers and its source publication. That is specific enough to distinguish it from sibling design/scoring tools like crispr_design_guides or screen_guides, though it never uses an explicit verb and relies on the name/title for the 'list' action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus alternatives, and no prerequisite or sequencing guidance (e.g. 'call before crispr_design_guides to see supported scaffolds'). The second sentence clarifies the corpus contents but is about data completeness, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tracesA
Read-only
Inspect

List the Sanger trace files in this project (.ab1 / .abi / .scf / .ztr) — the list a batch runs over. Wire its names into a trace reader's For-each so every read in the project is processed in one pipeline, instead of one node per read.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
idsYestheir project file ids, in the same order (unambiguous where two names match)
countYeshow many traces that is
namesYesthe trace file names, in project order — the list to scatter a trace reader over

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful context beyond that: the output's `names` key is the integration point and the scope is all traces 'in this project', which an agent cannot infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences, front-loaded with the action and file scope, followed by the concrete wiring instruction. No filler, every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be re-explained, and the annotations carry the safety profile. The description supplies the scope and the downstream integration pattern, leaving only minor input-parameter detail to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description references 'this project' (mapping loosely to _files) but adds no syntax or meaning for the two inputs beyond what the schema already documents; `names` it mentions is an output field, not an input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the Sanger trace files in this project') and enumerates the exact file extensions covered (.ab1/.abi/.scf/.ztr), so an agent knows precisely what it returns and can distinguish it from siblings like load_trace or draw_trace that consume a single trace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: it produces 'the list a batch runs over' and instructs wiring its `names` into a trace reader's For-each to process every read in one pipeline rather than one node per read. This is a strong when-to-use statement, though it does not name an explicit sibling alternative to avoid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workflow_templatesA
Read-only
Inspect

The built-in starter workflows — id, name, what each does and which tools it chains. Pass an id to get that template’s graph back, ready to hand to run_workflow. This server is stateless, so these are the shipped templates only, not anything a person has saved in their own editor.

NameRequiredDescriptionDefault
idNoone template id; omit for the whole listing

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds useful behavioral context beyond the annotations: the server is stateless and serves only built-in shipped templates, which prevents an agent from expecting user-saved workflows. It does not describe pagination or a full return shape, but that is a minor gap for a listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loads the core resource and returned fields, then adds the id behavior and the stateless limitation. Every sentence earns its place, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, one-parameter, read-only listing tool, the description is complete enough. It covers the listing content, the id-filtered graph result, the run_workflow handoff, and the stateless scope limitation; no output schema exists, but the description sufficiently characterizes what comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents that id is optional and that omitting it returns the whole listing. The description adds meaning by explaining what passing an id yields — that template's graph, ready to hand to run_workflow — which goes beyond the terse schema note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('built-in starter workflows') and states exactly what is returned: id, name, description, and chained tools. It also distinguishes this listing from user-saved workflows and names the downstream consumer, run_workflow, so an agent can tell what this tool is for 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the two call modes: omit id for the whole listing, or pass id to get that template's graph ready for run_workflow. It also gives a real exclusion — this server is stateless, so only shipped templates are available, not personal saved ones. It does not, however, compare against sibling workflow tools such as validate_workflow or plan_next_tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_recordA
Read-only
Inspect

Read a CHOSEN project document as a record — the pipeline's data-reader source, for running on a specific file instead of whatever happens to be open in the editor. Wire its record into any downstream node's $subject.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentYesthe project document to read — its id, or its exact name (`list_library` lists them).

Output Schema

NameRequiredDescription
nameYesdocument name
lengthYeslength in bp
recordYesthe chosen document as a record (subject for downstream nodes)
circularYestopology (true = circular)
sequenceYesthe sequence 5'→3'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe, read-only, non-destructive operation. The description adds meaningful pipeline behavior beyond that: it is a data-reader source and its `record` output is intended to be wired into downstream nodes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the primary purpose and usage contrast front-loaded. Every sentence carries useful information: what to read, when to use it, and how to connect its output downstream.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, rich annotations, and full schema parameter coverage, so the description need not explain the return shape. It adequately explains the tool's role in the pipeline, though it could say more about failure behavior or document lookup requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the parameters and nested `_subject` structure thoroughly. The description mentions the chosen document and the resulting `record`, but does not add parameter-specific syntax or selection rules beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: reading a chosen project document as a record. It also distinguishes the tool from the implicit alternative of using whatever is currently open in the editor, which is exactly the sibling differentiation an agent needs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: use this when running on a specific chosen file rather than the editor's currently open document, and wire the resulting `record` into downstream `$subject`. It stops short of naming explicit alternative tools or exclusions, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_traceA
Read-only
Inspect

Read a Sanger trace (.ab1 / .scf / .ztr) from this project and hand its BASE CALLS onward as a record, with the per-base quality and the trim bounds beside them. This is what makes a sequencing read a pipeline input: verify it against a reference, align it, gate on its quality. The trace SIGNAL stays here — a record crosses a wire as bases, and a peak cannot be written as one.

NameRequiredDescriptionDefault
trimNoemit the quality-trimmed read rather than the whole call list. The bounds are the sliding-window mean-phred bounds the chromatogram panel trims by, so panel and pipeline cut at the same base.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace file to read: its name (`read_F.ab1`) or its project file id. A file id is project-specific, so a template ships this unset.
min_qualityNothe mean phred a window must reach to be kept when trimming. Only applies when trim is true.
reverse_complementNoread it on the other strand. A reverse primer's trace is the reverse complement of the strand you are verifying, and a name ending _R is the convention for it.

Output Schema

NameRequiredDescription
traceYeswhat the FILE says about itself: format, instrument comments, call count, trim bounds. Not the signal, which cannot ride a wire
lengthYeshow many bases that is
recordYesthe read as a linear record, ready for any downstream step
sequenceYesits bases, trimmed when trimming is on
ambiguousYeshow many calls are not A, C, G or T: the mixed positions
qualitiesYesper-base phred, parallel to the bases
meanQualityYesthe ARITHMETIC mean of the per-base phred, which is what FastQC plots. Always the higher of the two, because a phred score is a log of an error rate: keep it for comparison with other tools, gate on readQuality
qualityPlotYesper-base phred as a plot along the read, with Q20 (1 error in 100) marked
readQualityYesthe read's own quality: the phred of its MEAN ERROR PROBABILITY, which is what seqkit's --avg-qual reports. Wire THIS into a gate to stop a bad read early
expectedAccuracyYesthe same number as a percentage of bases expected to be correct

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description's main job is disclosing output semantics — it does say the signal is dropped and only bases/quality/bounds cross the boundary, which is genuinely useful framing. It does not cover failure modes (unreadable trace, unbounded trims) or that the trimming is a sliding-window mean-phred cut at the same base as the chromatogram panel (that detail lives only in the schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the operation and its input formats, with the pipeline framing immediately after. The closing metaphor ('a record crosses a wire as bases, and a peak cannot be written as one') is flavorful but does carry the real constraint that signal cannot round-trip, so it mostly earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be spelled out, and annotations cover the safety profile; the description supplies the conceptual boundary between trace and record that neither structured field conveys. Only the routing to sibling trace tools is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries trim, min_quality, reverse_complement, document and _subject semantics in detail. The description corroborates 'trim bounds' and 'per-base quality' but adds no syntax or defaults beyond what the schema states. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read a Sanger trace (.ab1 / .scf / .ztr)') and pins the output shape: base calls as a record plus per-base quality and trim bounds. It also implicitly draws the line against signal-level siblings by declaring 'the trace SIGNAL stays here', though it never names trace_raw_signal or draw_trace to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The downstream rationale ('verify it against a reference, align it, gate on its quality') tells the agent what the output is for, which implies when to reach for it. But there is no explicit when-not and no named alternative (trace_raw_signal, trim_trace, call_bases_from_trace, draw_trace all sit adjacent), so selection still requires inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_clinicalA
Read-only
Inspect

Look up clinical and translational evidence: ClinicalTrials.gov trials, FDA labels and adverse events, Open Targets associations, CIViC cancer variant evidence, ClinGen curation, cBioPortal cohorts, or DepMap dependencies.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYesa drug, gene, disease or trial id, or a command such as "clingen_gene_validity:BRCA2".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety and external-query profile is covered structurally. The description adds useful context about which external authorities are queried (useful given openWorldHint), but says nothing about rate limits, per-source behavior differences, or result freshness. Adequate but not rich, which is fair against the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the verb and resource first, then the evidence sources. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full-coverage schema, an output schema (so return values need not be explained), and annotations covering the safety profile, the description is nearly self-sufficient for calling the tool. The only real gap is routing guidance against the many sibling lookup_* tools, which keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so source, query, and limit are already documented at baseline; the schema even supplies command syntax examples like "clingen_gene_validity:BRCA2". The description's source list reinforces the enum semantics but adds no query grammar or per-source syntax detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Look up') and resource ('clinical and translational evidence'), then enumerates the eight authority sources (ClinicalTrials.gov, FDA, Open Targets, CIViC, ClinGen, cBioPortal, DepMap) which map directly onto the source enum. This clearly distinguishes it from the other lookup_* siblings (lookup_gene, lookup_variant, lookup_omics), which target different evidence domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the evidence domains, so an agent can infer this is the clinical/translational lookup, but it never states when to prefer this over lookup_variant, lookup_gene, or search_literature, nor any prerequisites or exclusions. Usage is implied rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_compoundA
Read-only
Inspect

Look up a chemical compound or drug: ChEMBL molecules, mechanisms of action and bioactivity, PubChem properties, ChEBI ontology, Rhea reactions, or purchasable ZINC compounds.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYesa compound name, SMILES or identifier, or a command such as "mechanism:CHEMBL941" or "admet:CHEMBL941".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, covering the safety profile. The description adds no further behavioral context such as authentication needs, rate limits, or data freshness, though it does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource before listing sources; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, output schema, and annotations, the description need not document parameters or return values. It covers the main source categories but omits 'bindingdb' from the source enum and offers no guidance on the query command syntax (covered by schema), so a 4.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing a baseline of 3. The description goes beyond the schema's generic source descriptions by mapping each enum value to specific content (e.g., ChEMBL molecules and mechanisms, ZINC purchasable compounds), which helps parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific verb ('Look up') and resource ('chemical compound or drug'), and enumerates source-specific content types (ChEMBL mechanisms, PubChem properties, etc.), which clearly distinguishes it from the many lookup_* siblings in genomics and proteins.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the domain context (chemical compounds/drugs) but does not explicitly state when to choose this over lookup_gene, lookup_protein, or other alternatives, nor any when-not conditions. Usage is implied by the source list, so a 3.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_geneB
Read-only
Inspect

Look up a gene or genomic region: NCBI Gene records, HGNC nomenclature, Ensembl records, cross-references, MyGene identifiers, UCSC assembly data, GTEx expression, or BioMart tables.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYesa gene symbol or identifier (e.g. "BRCA2"), or a command such as "ensembl_lookup:BRCA2" or "ensembl_xrefs:ENSG00000139618".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds little behavioral context beyond naming the authorities; it does not mention external-service behavior, command-style query handling, or any practical constraints beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single front-loaded sentence that states the action and enumerates supported authorities without filler. The list is dense but appropriate for a multi-source lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema and full schema coverage reduces the description's burden, and the source list helps orient the agent. However, the description omits sibling differentiation and does not explain when to choose among the many gene-related lookup or browsing tools, leaving a notable usage gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds useful semantic meaning to the source enum by associating values with record types like GTEx expression, UCSC assembly data, and BioMart tables. It still does not clarify the query command syntax or the nested _subject/_files parameters, but it meaningfully enriches source interpretation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: look up a gene or genomic region across named authorities such as NCBI Gene, HGNC, Ensembl, MyGene, UCSC, GTEx, and BioMart. It is clear what the tool does, but it does not explicitly distinguish itself from nearby siblings like lookup_variant, lookup_omics, or browse_region.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists supported sources but gives no guidance on when to use this tool versus alternatives such as lookup_variant, lookup_omics, fetch_record, or browse_region. There are no exclusions, prerequisites, or decision rules for choosing among the source values.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_omicsA
Read-only
Inspect

Look up omics and regulation records: GEO and ArrayExpress experiments, PRIDE proteomics, MetaboLights, MGnify, ENCODE experiments and files, JASPAR motifs, or UniBind TF binding sites.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYesan accession or search term, or a command such as "geo_get_series:GSE12345" or "encode_get_file:ENCFF002JUR".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful scope detail by naming the external authorities queried, but it does not disclose rate limits, authentication needs, pagination, or other behavioral traits beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the purpose first and the source list second. Every element earns its place by scoping the tool's data coverage, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema and 100% schema description coverage, so the description need not explain return values or parameter details. It adequately defines the domain and sources, but lacks explicit sibling-routing guidance, leaving a small completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents source, query, limit, _files, and _subject in detail. The description names the covered sources, which aligns with the source enum, but adds no syntax or format guidance beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Look up') and resource ('omics and regulation records'), then enumerates concrete authorities including GEO, ArrayExpress, PRIDE, MetaboLights, MGnify, ENCODE, JASPAR, and UniBind. This gives an agent a precise domain and distinguishes it from other lookup_* siblings that retrieve genes, proteins, compounds, or variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing the omics and regulation sources it covers, but it does not explicitly say when to choose this tool over alternatives such as lookup_gene or search_records. There is no when-not guidance or named sibling alternative, so usage is only inferred from the source scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_ontologyA
Read-only
Inspect

Resolve an ontology term, taxon, pathway or cell type: OLS ontologies, NCBI Taxonomy, QuickGO annotations, Reactome pathways, KEGG entries, Rfam RNA families, CellGuide/PanglaoDB cell types and markers, an antibody RRID, or an identifiers.org prefix and the pattern its ids follow.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYesa term, accession or command such as "get_go_annotations:P04637" or "map_reactome_pathways:TP53".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it spans many authorities and mentions identifiers.org prefix patterns, but it does not state rate limits, authentication needs, or special behaviors for live external queries; with annotations present, this is an acceptable but not rich addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense but front-loaded sentence that begins with the verb and then enumerates the domains. It has no filler, though the long authority list makes it slightly less scannable than an ideally structured definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, complete annotations and 100% parameter description coverage, the description is sufficient for an agent to understand the resource breadth and invoke the tool. The main omission is sibling routing, which is more of a usage-guideline gap than a completeness gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description usefully maps the source concepts to authorities, but the source enum and query examples are already documented in the schema, so the description adds only marginal meaning beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Resolve', and enumerates the resource domains it covers: OLS ontologies, NCBI Taxonomy, QuickGO, Reactome, KEGG, Rfam, CellGuide/PanglaoDB, antibody RRIDs, and identifiers.org. That is far clearer than a tautology, but it does not distinguish this tool from sibling lookups such as lookup_gene, lookup_protein or lookup_variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The list of supported authorities implies when the tool applies, but there is no explicit guidance on when to use lookup_ontology instead of lookup_gene, lookup_protein, lookup_variant, query_database or fetch_record. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_proteinB
Read-only
Inspect

Look up a protein: UniProt records, InterPro/Pfam domain architecture, STRING interaction networks, Human Protein Atlas expression, or a predicted/experimental structure from AlphaFold, PDB or EMDB.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYesan accession or gene symbol, or a command such as "get_domain_architecture:P04637" or "get_string_network:TP53,BRCA1 species=9606". A PLAIN UniProt search returns metadata only and never the residues (its field projection has no sequence field), so to get the SEQUENCE ask for the entry by accession: "get_uniprot_entries:P60568" (FASTA, residues included), or add "format=tsv fields=accession,sequence" for a table.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. Beyond that the description adds no behavioral context: nothing about remote-service latency or rate limits, nothing about what a lookup yields vs. what requires a follow-up call, and no indication of fallback behavior when a source has no entry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the resource being looked up is named first. It is a dense enumeration, but every clause names a distinct source/capability rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the schema covers the 5 parameters including the nested _subject/_files record references. What remains missing is selection-aware context: how the source and query command interact, and how this tool relates to the many other protein-annotation siblings. Adequate, but only just, for a multi-source open-world lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself carries unusually rich parameter semantics (command syntax, the 'plain UniProt search returns metadata only' caveat, the format=tsv fields=sequence workaround). The description only maps its prose source list loosely onto the source enum (and even omits complexportal and intact), adding little beyond the schema — baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource ('Look up a protein') and enumerates the concrete data types reachable (UniProt records, domain architecture, interaction networks, expression, structures). It does not differentiate itself from nearby siblings such as lookup_gene, protein_profile, scan_protein_domains or lookup_residue_sites, so the agent cannot fully disambiguate from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Listing the capability per source implicitly tells the agent when this tool is the right one (need a domain architecture, an interaction network, an expression profile, a structure), which is more than nothing. However there is no explicit when-to-use, no when-not-to-use, and no named alternative among the many protein siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_residue_sitesA
Read-only
Inspect

The individual catalytic, substrate-binding, metal-binding and interface residues a member database annotates INSIDE a domain, for a known protein. Takes a UniProt accession. This is what InterProScan itself does not return — its per-location site array comes back empty — so it is a separate lookup against InterPro, keyed to an entry whose sequence the residue numbers belong to.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
accessionYesUniProt accession, e.g. P00330. It must be the entry whose CURRENT sequence you mean: residues are numbered against it, so an accession for a protein that merely resembles yours puts a catalytic residue on the wrong amino acid.

Output Schema

NameRequiredDescription
signaturesYesper member-database signature: its accession, the database, its name, and each named site with every annotated residue and 1-based position
residueCountYestotal annotated residues across every signature

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, non-destructive, open-world). The description adds genuinely useful behavior: this is a live separate lookup against InterPro rather than a local computation, and it is keyed to a specific entry whose sequence the residue numbers belong to.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is returned, followed by the input and the InterProScan gap. Three sentences are dense but each carries information; minor redundancy between the description and the accession schema blurb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value explanation is not needed. Purpose, input, and the reason this exists as a separate tool are all covered, leaving only the absence of named sibling alternatives as a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the accession parameter already carries the warning about current-sequence numbering. The description reinforces that the accession must be the entry the residue numbers belong to, but adds little syntax or meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (residue sites annotated by a member database inside a domain) and the input (a UniProt accession). The scoping is precise enough to separate it from domain-scanning siblings like scan_protein_domains or RPS-BLAST tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the condition for using it: it retrieves what InterProScan itself does not return, because its per-location site array comes back empty, so this is a separate InterPro lookup. Clear context, though it never names an alternative tool by name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_variantB
Read-only
Inspect

Look up a variant: ClinVar clinical interpretation, dbSNP records, gnomAD population frequency and gene constraint, CADD deleteriousness, or GWAS/eQTL associations.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYesan rsID, HGVS or chrom-pos-ref-alt id, or a command such as "get_variant:variant_id=19-44908822-C-T" or "gene_constraint:gene_symbol=BRCA2". The eQTL Catalogue is the exception and needs a LOCUS, because its summary statistics are indexed by position and its REST API is retired: "eqtl_list_datasets tissue_label=macrophage" to pick a dataset, then "eqtl_associations dataset_id=QTD000021 region=1:109274570-109279000 gene_id=ENSG00000134243".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description usefully confirms the open-world nature by naming external authorities queried, but adds no detail on rate limits, caching, latency, or what happens when a source has no record.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; every clause names a distinct data source and the payload it yields. It is appropriately sized for a multi-source lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, 100% schema coverage, and annotations covering safety, the description supplies the remaining needed context: which authorities back the tool. It could note that source selection changes the required query shape, but the schema already handles that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the query parameter's schema text already explains rsID/HGVS/chrom-pos-ref-alt syntax plus the eQTL locus exception in detail. The description's source list loosely maps to the source enum but adds no syntax, format, or constraint information beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ("Look up a variant") and enumerates exactly what each source returns (ClinVar interpretation, dbSNP records, gnomAD frequency/constraint, CADD, GWAS/eQTL). It stops short of differentiating itself from siblings such as lookup_gene, lookup_clinical, annotate_region, or score_variant_effect, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many related lookups in the sibling list, nor any prerequisite or exclusion. The source enumeration implies the kinds of questions it answers, but the agent must infer routing entirely on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_chemical_spaceA
Read-only
Inspect

Principal components of a list of small molecules, computed as R's prcomp computes them, on the scaled property table or on Morgan radius-2 bits: each structure's scores on PC1 and PC2, every component's standard deviation and variance share, the property loadings, and constant properties left out. Indices are 0-based.

NameRequiredDescriptionDefault
spaceNowhat the components are taken over. Values: descriptors (Properties (scaled)), morgan (Morgan bits (ECFP4)).descriptors
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculesYesthe structures: one SMILES or molfile per entry.

Output Schema

NameRequiredDescription
pointsYesper mapped structure: its index and its PC1 and PC2 scores
summaryYesthe map in words, generated from this run
explainedYesthe share of the total variance each component carries

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context: the computation mirrors R's prcomp, "constant properties left out" describes how degenerate inputs are handled, and "Indices are 0-based" flags an important interpretation rule.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the core action and then enumerates outputs; little waste. It is long but each clause carries information, though the output enumeration partly duplicates the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a PCA-style tool with an output schema present, the description needn't explain return values, yet it still establishes the algorithmic basis (prcomp), the two input spaces, and the 0-based indexing convention. Complete enough for correct invocation, though alternative routing is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the enum for space (descriptors vs morgan) is already documented in the schema, including the ECFP4 detail. The description's mention of the scaled property table and Morgan radius-2 bits slightly reinforces this but adds little beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: computing principal components of a list of small molecules. The output enumeration (PC1/PC2 scores, standard deviations, variance share, loadings) is unusually precise. However, it never names or distinguishes itself from sibling molecule-set tools (cluster_molecules, compare_molecules, assess_small_molecule), so differentiation relies on the reader's own comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (dimensionality reduction/projection of a molecule set) but gives no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer that this is for visualization/space-mapping rather than clustering or pairwise comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_reaction_atomsA
Read-only
Inspect

Predict which reactant atom each product atom came from (atom-to-atom mapping) with RXNMapper (Schwaller et al., Sci. Adv. 2021), the most accurate mapper in Lin et al.'s 2022 benchmark of 1,851 curated reactions. Agents join the reactants, each compound is canonicalised and each side sorted before mapping, as RXNMapper does. Returns the reaction SMILES with atom maps and a confidence (the product of each product atom's attention score). A prediction, not a measurement.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
reactionYesreaction SMILES, reactants>agents>products; existing atom maps are ignored.

Output Schema

NameRequiredDescription
mappedYesthe canonicalised reaction SMILES with atom maps
confidenceYesthe product of the per-atom confidences, 0 to 1

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, non-destructive, closed-world), the description discloses the internal preprocessing (reactants joined, compounds canonicalised, each side sorted), the confidence semantics (product of product-atom attention scores), and an honesty caveat that the result is a prediction rather than a measurement. This adds real behavioral context; only permission/rate-limit style details are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the action and resource, and each sentence carries information (engine, preprocessing, output shape, caveat). The benchmarking citation is slightly decorative but justifies the accuracy claim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only prediction tool with a full parameter schema and an output schema, the definition is complete: it explains what is computed, how inputs are normalised, and how to read the confidence value. The only minor gap is any mention of the _subject/_files reference parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 'reaction' parameter and the library-reference parameters are already documented. The description contributes the useful nuance that descriptors/atom ordering are normalised and that existing maps are ignored, but this is marginal beyond the schema and the _subject/_files plumbing goes unmentioned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb+resource ('Predict which reactant atom each product atom came from') and names the technique (atom-to-atom mapping) plus the specific engine (RXNMapper). An agent can immediately tell this apart from sibling tools like enumerate_reaction or compare_molecules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool is for reactions needing atom mapping, and the caveat 'A prediction, not a measurement' hints at when its output should be trusted. However, there is no explicit when-to-use/when-not or naming of an alternative mapping approach, so guidance stays at the implied level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_readsA
Read-only
Inspect

Map sequencing reads (FASTQ or FASTA) or assembled contigs onto a reference and return the alignment as SAM, the file a pileup viewer, a variant caller or samtools reads next. This is minimap2 (minimizer seeds, chaining, banded dual-affine extension with inversion detection, MAPQ), ported and checked record for record against the minimap2 2.31 CLI under every preset it offers: Illumina short reads (sr, the default), RNA-seq across introns (splice:sr for short reads, splice and splice:hq for long RNA or cDNA, which also report every splice junction with its read support), Nanopore, PacBio HiFi and CLR, accurate long reads, Illumina Complete Long Reads, assemblies at three divergence levels, and all-vs-all read overlaps (ava-pb, ava-ont, where the reads are their own reference and the output is PAF). Give mates to map read pairs (sr and splice:sr): the two inputs pair record for record, mate 2 facing mate 1 (FR), and pairing lifts a mate placed in a repeat by its uniquely placed partner. Leave reference unset to map against the record this step runs on; a multi-record FASTA maps against every record.

NameRequiredDescriptionDefault
kNok-mer size of the minimizer seeds (`-k`). Advanced.
wNominimizer window (`-w`): one seed kept per this many consecutive k-mers. Advanced.
depthNoper-base read depth of the SAM written (`samtools depth`): off; every position inside some read's span (an intron or deletion inside a read prints 0); or every position of each reference a read landed on (`-a`). Reads that are unmapped, secondary, QC-failed or duplicate are not counted. Values: none (Off), covered (Covered positions), all (Every position (-a)).none
matesNomate-2 reads, pairing record for record with `reads`. Empty maps the reads single-end.
readsYesthe reads: FASTQ (quality kept in the SAM) or FASTA (QUAL written as `*`).
zdropNoZ-drop (`-z`): stop extending when the score falls this far below its best, which clips a read at a junction instead of forcing it through. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
md_tagNowrite MD tags (`--MD`); the consensus uses them to trust reads with edits nearby less.
presetNowhat is being mapped (`-x`): it sets every option below to minimap2's values for that data. The defaults shown are the short-read preset's; an option left unset takes the chosen preset's own value. Values: sr (Short reads), splice:sr (Short RNA-seq reads), splice (Long RNA reads, cDNA), splice:hq (Accurate long RNA reads), map-ont (Nanopore), lr:hq (Accurate long reads), map-hifi (PacBio HiFi), map-pb (PacBio CLR), map-iclr (Illumina Complete Long Reads), lr:hqae (Assembly evaluation), asm5 (Assembly, ~0.1% divergent), asm10 (Assembly, ~1% divergent), ava-pb (PacBio all-vs-all overlaps), ava-ont (Nanopore all-vs-all overlaps), asm20 (Assembly, several % divergent).sr
max_gapNoa chain stops at a gap longer than this between seeds (`-g`). In bp. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
gap_openNogap-open penalty of the short-gap cost (`-O`, first value). Advanced.
variantsNocall SNVs and indels from the SAM written (`bcftools mpileup | bcftools call -mv`): genotype, quality, allelic depths and strand counts per site, as VCF.
bandwidthNoband of the chaining and alignment dynamic programming (`-r`, first value): the most the two sequences may drift against each other inside one chain. In bp. Advanced.
consensusNothe sample's sequence called from the reads over the reference (`samtools consensus`); N where no call is confident. Values: off (Off), fasta (FASTA), fastq (FASTQ (with quality)), pileup (Pileup (every column)).off
end_bonusNobonus for reaching the read's end (`--end-bonus`); higher prefers end-to-end alignment over soft-clipping. Advanced.
referenceNowhat to map against: bases, or a FASTA with one or more records. Unset, it is the record this step runs on.
gap_extendNoper-base extension of the short-gap cost (`-E`, first value). Advanced.
max_intronNolongest intron an alignment may span (`-G`); it also sets the reference gap and both chaining bands, as minimap2 does. In bp. Only applies when preset is splice or splice:hq or splice:sr. Advanced.
markdup_tagNotag each duplicate with the name of the read it copies (`do:Z`, `-t`). Only applies when mark_duplicates is true.
match_scoreNoscore per matching base (`-A`). Advanced.
markdup_modeNowhat makes two reads duplicates (`-m`): the template's two outer ends (samtools' default, as Picard), or each read's start by strand. Values: t (Template ends), s (Read starts). Only applies when mark_duplicates is true.t
min_dp_scoreNolowest peak alignment score kept (`-s`).
variants_baqNorecalibrate base qualities by their alignment uncertainty near indels (BAQ, bcftools' default; off is `-B`). Only applies when variants is true.
gap_open_longNogap-open penalty of the long-gap cost (`-O`, second value); a gap costs the cheaper of the two. Advanced.
max_secondaryNomost secondary placements kept per read (`-N`).
output_formatNoSAM (`-a`, every read with its alignment) or PAF (minimap2's default: one line per hit, no read sequence). Unset: PAF for the all-vs-all presets, SAM otherwise. Values: sam (SAM), paf (PAF).
variants_argsNofurther `bcftools mpileup` options (`--max-BQ`, `--delta-BQ`, `--ff`, `-M`, `-E`). Only applies when variants is true.
bandwidth_longNowider band for the long join (`-r`, second value): when the best chain leaves much of a long read unexplained, its seeds are re-chained in this band. No effect under the short-read preset. In bp. Advanced.
base_alignmentNoin PAF, align base by base (`-c`): exact ends, CIGAR as `cg:Z`, NM. Off, a hit's coordinates are its chain's ends, which is much faster. SAM always aligns. Only applies when output_format is paf.
consensus_argsNofurther `samtools consensus` options, applied last (e.g. `--min-MQ 20 -t :hiseq`); all but files and threads. Only applies when consensus is fasta or fastq or pileup.
consensus_modeNohow a column is called (`-m`). Values: bayesian (Bayesian), bayesian_p (Bayesian, precise), bayesian_m (Bayesian, blended), bayesian_116 (Bayesian (samtools 1.16)), simple (Simple counting). Only applies when consensus is fasta or fastq or pileup.bayesian
markdup_removeNoremove the duplicates from the SAM instead of flagging them (`-r`). Only applies when mark_duplicates is true.
min_minimizersNofewest seeds a chain may have (`-n`). Advanced.
variants_priorNothe mutation-rate prior (`call -P`): higher calls more sites. Only applies when variants is true.
gap_extend_longNoper-base extension of the long-gap cost (`-E`, second value). Advanced.
mark_duplicatesNomark PCR and optical duplicates (`samtools fixmate -m`, `sort`, `markdup`): reads whose 5′ ends, strands and mate position match are copies of one fragment; the best by base quality is kept and the rest flagged 0x400. The SAM comes back sorted by coordinate, and flagstat, coverage and depth then count the flags.
min_chain_scoreNolowest chaining score kept (`-m`), roughly the number of matching bases the seeds cover.
secondary_ratioNoa secondary placement is kept when its score is at least this fraction of the primary's (`-p`).
variants_indelsNocall indels too, with bcftools' default indel model (off is `-I`, SNVs only). Only applies when variants is true.
write_secondaryNoalso write secondary records to the SAM (`--secondary=yes`); off, they are counted but not written, as minimap2 does for short reads.
zdrop_inversionNoZ-drop at which a stalled long alignment is tested for an inversion (`-z`, second value); an inverted segment found there is written as its own record. Advanced.
consensus_regionNoone region (`-r`): name or name:start-end, 1-based. Only applies when consensus is fasta or fastq or pileup.
mismatch_penaltyNopenalty per mismatch (`-B`). Advanced.
consensus_profileNoa platform's quality calibration and tuned parameters (`-X`). Values: none (None), hiseq (Illumina HiSeq), hifi (PacBio HiFi), r10.4_sup (Nanopore R10.4 simplex (sup)), r10.4_dup (Nanopore R10.4 duplex), ultima (Ultima Genomics). Only applies when consensus is fasta or fastq or pileup.none
variants_full_baqNorun BAQ on every read at a column with an indel, not only the reads it is likely to change (`-D`; nothing with BAQ off). Only applies when variants is true.
variants_gap_openNophred-scaled probability that sequencing opens a gap (`-o`); lower calls more indels. Only applies when variants is true.
transition_penaltyNopenalty for a transition (A↔G, C↔T) mismatch (`-b`); 0 scores it as any mismatch. Illumina Complete Long Reads use 4. Advanced.
variants_adjust_mqNocap the mapping quality of reads with many high-quality mismatches (`-C`; 50 for BWA reads, 0 is off, values up to 10 do nothing). Only applies when variants is true.
variants_max_depthNomost reads piled up per position (`-d`); at most 255, where bcftools starts downsampling at random. Only applies when variants is true.
consensus_ambiguityNoa heterozygous call as its IUPAC code (`-A`). Only applies when consensus is fasta or fastq or pileup.
consensus_min_depthNofewer usable reads than this is N (`-d`). Only applies when consensus is fasta or fastq or pileup.
consensus_positionsNowhich positions are written. Values: covered (Covered span), reference (Whole reference (-a)), all (Every reference (-aa)). Only applies when consensus is fasta or fastq or pileup.covered
max_fragment_lengthNolongest fragment (insert) two mates may span and still pair (`--frag`/`-I`). In bp. Only applies when mates is set.
max_seed_occurrenceNoseeds occurring more often than this in the reference are skipped (`-f`); the query length they cover is what `rep_len` reports, and it lowers MAPQ. Advanced.
variants_gap_extendNophred-scaled probability that sequencing extends a gap (`-e`). Only applies when variants is true.
variants_indel_biasNoraise to favour indel recall over precision (`--indel-bias`). Only applies when variants is true.
variants_indel_sizeNoapproximate largest indel considered, in bases (`--indel-size`, at least 20). Only applies when variants is true.
noncanonical_penaltyNocost of a splice site that is not GT..AG, GC..AG or AT..AC (`-C`). Only the splice presets align across introns. Only applies when preset is splice or splice:hq or splice:sr. Advanced.
variants_homopolymerNohow strongly a homopolymer run lowers an indel's quality (`-h`); lower trusts indels in runs less. Only applies when variants is true.
depth_count_deletionsNocount a read's deletions toward the depth under them (`-J`); off, a deleted base is not covered by that read. Only applies when depth is covered or all.
depth_min_read_lengthNoa read with fewer aligned bases than this (soft clips excluded) does not count (`-l`). In bp. Only applies when depth is covered or all.
depth_remove_overlapsNocount the overlap of a read pair once (`-s`): the second mate starts counting where the first ended. Only applies when depth is covered or all.
markdup_supplementaryNoalso flag the supplementary, secondary and unmapped records of a duplicate (`-S`). Only applies when mark_duplicates is true.
depth_min_base_qualityNoa base below this quality does not count (`-q`). Only applies when depth is covered or all.
homopolymer_compressedNoseed on homopolymer-compressed sequence (`-H`), so runs of one base count once: the PacBio CLR preset's answer to its length errors in homopolymers. Advanced.
variants_count_orphansNokeep reads paired but not properly paired (`-A`). Only applies when variants is true.
variants_keep_referenceNoalso write the positions where the reads agree with the reference (`call -m` without `-v`): one record per covered position, variant or not. Only applies when variants is true.
consensus_fill_referenceNothe reference's base where no read gives one (`-T`), instead of N. Only applies when consensus is fasta or fastq or pileup.
consensus_show_deletionsNowrite a deletion as `*` (`--show-del`). Only applies when consensus is fasta or fastq or pileup.
markdup_optical_distanceNoalso call a duplicate optical when its Illumina tile x/y lies within this many pixels of the original's (`-d`); 0 is off. Illumina suggests 100 for unpatterned flow cells and 2,500 for patterned ones. In px. Only applies when mark_duplicates is true.
variants_max_indel_depthNopositions this deep or deeper get no indel call (`-L`). Only applies when variants is true.
variants_min_indel_readsNofewest reads carrying an indel for it to be considered (`-m`). Only applies when variants is true.
consensus_show_insertionsNowrite inserted bases (`--show-ins`). Only applies when consensus is fasta or fastq or pileup.
depth_min_mapping_qualityNoa read below this mapping quality does not count (`-Q`). Only applies when depth is covered or all.
variants_min_base_qualityNoskip bases below this quality (`-Q`). Only applies when variants is true.
variants_min_indel_fractionNosmallest fraction of reads carrying an indel for it to be considered (`-F`). Only applies when variants is true.
variants_overlap_adjustmentNowhere two mates overlap, count the shared bases once by zeroing one mate's qualities (off is `-x`). Only applies when variants is true.
variants_min_mapping_qualityNoskip reads below this mapping quality (`-q`). Only applies when variants is true.

Output Schema

NameRequiredDescription
pafYesthe hits as PAF, as minimap2 writes it by default (empty when the output is SAM); for the all-vs-all presets, every overlap between two reads
samYesthe alignment as SAM text (header + records), as `minimap2 -ax <preset>` writes it. Open it in the pileup, or hand it to a variant caller
vcfYesSNVs called from the SAM written, as `bcftools call -mv` writes the VCF (GT, PL, AD; DP, DP4, MQ and the bias tests per site). Empty unless `variants` is on. Open it in the variant viewer
callsYeseach call: contig, position, reference and alternate alleles, QUAL, genotype, depth, DP4, allelic depths, PL and mean mapping quality. Empty unless `variants` is on
depthYes`samtools depth` of the SAM written, as samtools prints it (reference, 1-based position, depth; one line per position). Empty unless `depth` asks for it
mapq0Yesmapped reads with MAPQ 0: placed, but with an equally good placement elsewhere
statsYesevery count: reads, fragments, mapped, unmapped, MAPQ bins, proper pairs, supplementary and secondary placements, reads spanning an intron, and per reference its reads and covered bases
mappedYesreads with a primary placement
markdupYes`samtools markdup`'s statistics when duplicates were marked: reads examined, pairs and singles, duplicate pairs and singles, optical duplicates, and the estimated library size. Empty otherwise
optionsYesevery minimap2 option the run used, with its flag, the preset value, and whether it was changed
readingYeswhat the run found, generated from its counts: the conclusion, then each qualifier the run earned
coverageYes`samtools coverage` of the SAM written: per reference its reads, covered bases, percent covered, mean depth, mean base quality and mean mapping quality (reads that are unmapped, secondary, QC-failed or duplicate excluded, as samtools does). Null for PAF output, which writes no SAM to summarize
flagstatYes`samtools flagstat` of the SAM written, as samtools prints it (QC-passed + QC-failed: total, primary, secondary, supplementary, duplicates, mapped, paired, properly paired, singletons, mates on another reference). Empty for PAF. Null for PAF output, which writes no SAM to summarize
unmappedYesreads with none
consensusYes`samtools consensus` of the SAM written, as samtools prints it (FASTA, FASTQ or pileup). Empty unless `consensus` asks for it
junctionsYessplice junctions as `minimap2 --write-junc` writes them (BED-like: reference, start, end, read, motif score, strand; one line per intron per read, primary alignments of MAPQ 10 or more). Empty outside the splice presets
meanIdentityYesmean identity of primary alignments, matching bases over aligned columns (0–1). Null when no read aligned, so there is nothing to measure: a 0 would read as every base mismatched
junctionTableYeseach distinct junction once: reference, start, end, strand, motif score (6 = GT..AG) and the number of reads that support it
properlyPairedYesreads in a proper pair (0 when mapped single-end)
variantSummaryYesthe calls counted: SNVs, indels, homozygous and heterozygous, transitions and transversions among the SNVs, covered positions, and the bcftools command used
consensusSummaryYesthe consensus counted: sequences, bases, N (no call), IUPAC ambiguity codes, lower-case and deletion calls, mean quality, and the samtools arguments used

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe-read profile (readOnlyHint=true, destructiveHint=false), so the description's job is to add behavior beyond that, and it does: mate pairing is FR and 'lifts a mate placed in a repeat by its uniquely placed partner', splice presets report every junction with read support, and PAF-vs-SAM output differs by preset. It omits cost/rate/limit context but adds real behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in sentence one, and the remaining sentences carry actionable content (pairing, splice support, reference defaulting). The long preset enumeration partially duplicates the schema enum descriptions, which is the main redundancy, but overall it is dense rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 79-parameter minimap2 wrapper with full schema descriptions and an output schema, the description supplies the conceptual frame (what presets mean, how pairing and presets interact, what gets emitted) that the schema alone would not convey. The only real gap is routing guidance against sibling aligners.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot: the listed defaults are the short-read preset's and 'an option left unset takes the chosen preset's own value', plus the unset-reference default and the output_format default rule. That interplay is genuinely useful beyond the per-parameter docs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a precise verb (map) and resource (sequencing reads/contigs onto a reference) and names the concrete output (SAM/PAF) and downstream consumers. It clearly frames the tool as a minimap2 2.31 port, which is unusually specific. It does not, however, differentiate itself from alignment siblings such as align_read, align_sequences, ebi_align or compare_reads_to_reference, which is the only thing keeping it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong in-tool guidance: it explains that `preset` should match the data type, that `mates` should be set for paired short-read/splice runs, and that leaving `reference` unset maps against the current record. It does not, however, tell the agent when to choose map_reads over a sibling aligner, so it stops short of explicit when-vs-alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mask_sequenceA
Read-only
Inspect

Mask the parts of a sequence a similarity search should not seed on, using BLAST's own three maskers: DUST for compositionally biased DNA (poly-A, simple repeats), SEG for the protein equivalent, and WindowMasker for repeats that are ordinary in composition but occur far more often than chance allows in the sequences given. Emits the soft- and hard-masked sequences and the masked intervals, so a pipeline can mask before it searches rather than explaining an empty hit table afterwards.

NameRequiredDescriptionDefault
hicutNoSEG's K2, the extension complexity in bits. Only applies when masker is seg.
levelNoDUST's T. Higher masks less. Only applies when masker is dust.
locutNoSEG's K1, the trigger complexity in bits. Only applies when masker is seg.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
maskerNowhich masker. dust and windowmasker take DNA; seg takes protein. Values: dust (DUST · biased DNA composition), seg (SEG · biased protein composition), windowmasker (WindowMasker · over-represented DNA).dust
windowNothe scored window's width. 0 takes each masker's own default.
contextNoWindowMasker only: the other sequences whose statistics define 'over-represented'. Its thresholds come from this SET, so wiring one plasmid asks whether a stretch is unusual for that plasmid, not for the organism. Only applies when masker is windowmasker.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe sequence to mask. Wire a record or a sequence output, or paste it. Left empty, the open record is used.
unit_sizeNoWindowMasker's n-mer length. 0 derives it from the length of everything given, the way the tool does. Only applies when masker is windowmasker.

Output Schema

NameRequiredDescription
maskedYesthe sequence soft-masked (lower case), which is what BLAST reads as masked
intervalsYesthe masked stretches, 0-based inclusive
hardMaskedYesthe sequence with the masked stretches replaced by N (or X for a protein)
provenanceYesthe masker, the parameters it really used, and for WindowMasker the derived thresholds and the set they came from
maskedFractionYeswhat share of the sequence was masked, 0 to 1. Wire into a $when to refuse a query that is mostly gone

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe, read-only, closed-world computation, so the bar is lower. The description adds real behavioral context beyond that: it emits both soft- and hard-masked sequences plus masked intervals, and notes that WindowMasker thresholds are derived from the context SET rather than organism-wide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and immediately followed by the masker taxonomy and the output rationale. Dense and mostly waste-free, though the long enumerations make it heavier than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema covering return values and annotations covering the safety profile, the description supplies the missing motivation and masker-selection logic. It could go further by tying itself explicitly to the search/alignment siblings it is meant to precede, but nothing an agent needs 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter, including the masker-specific applicability of hicut, locut, level, window, unit_size and context. The description reinforces the DNA/protein split but adds no new syntax or defaults, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (mask) plus the exact resource and scope: the regions a similarity search should not seed on. It names and differentiates all three maskers (DUST, SEG, WindowMasker) with what each targets, so an agent can act 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly frames when this belongs in a pipeline (mask before searching rather than explaining an empty hit table afterwards) and which masker suits which substrate (DNA vs protein). It stops short of naming the search sibling it should precede or stating exclusions, so it is clear context without explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

matched_molecular_pairsA
Read-only
Inspect

Matched molecular pairs (Hussain & Rea 2010) in a list of small molecules, as mmpdb finds them: pairs that differ by one change no larger than a heavy-atom limit, grouped by the change as a reaction SMIRKS, most pairs first. Indices are 0-based.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_sizeNolargest changed part, in heavy atoms.
moleculesYesthe structures: one SMILES or molfile per entry.

Output Schema

NameRequiredDescription
summaryYesthe pairs in words, generated from this run
transformationsYeseach change as SMIRKS with its pairs (left, right, shared context)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false, and closed-world, so the safety profile is covered. Beyond that the description adds real behavioral detail: output is grouped by the change as a reaction SMIRKS, sorted most pairs first, and indices are 0-based — useful context the annotations do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tightly-packed sentence that front-loads the core concept and appends output-format notes. Every clause carries information, though the density makes it slightly heavy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described; the description still adds the ordering and grouping behavior. For a read-only analysis tool with fully documented parameters, this is nearly complete, with the main gap being no routing guidance to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, establishing a baseline of 3. The description adds only a conceptual gloss on the heavy-atom limit and does not expand on parameter formats or values beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Matched molecular pairs ... in a list of small molecules') and defines the concept precisely, including the source algorithm (mmpdb) and the citation. It is clear what the tool computes, though it does not explicitly contrast itself with related siblings such as activity_cliffs or decompose_r_groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description (analyze a molecule list for MMPs), but there is no explicit when-to-use or when-not-to-use guidance and no alternative sibling is named. The agent must infer the call context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

match_part_by_sequenceA
Read-only
Inspect

Identify a stretch of DNA by asking the iGEM Registry which published part carries exactly those bases, and hand back that part's own description, Sequence-Ontology role, literature citation and license. The match is decided by comparing bases, never by a name — so a pipeline can label a fragment it has assembled, or check that a feature really is the part it is called.

NameRequiredDescriptionDefault
capNomost candidate sequences to fetch and compare before stopping and saying so.
nameNoa name to narrow the candidates by (a feature name, or a part id like BBa_R0040). It only narrows: the bases decide the match. Leave it empty to compare every candidate of this exact length, which is slower and can be far more requests.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceYesthe bases to identify — a feature’s span, an assembled fragment, a pasted oligo.

Output Schema

NameRequiredDescription
pageYesthe registry page, so the claim can be checked without us
partYesthe best match’s registry id, exact before reverse-complement
roleYesits Sequence-Ontology role, as the registry files it
titleYesthe registry’s own short title for that part
strandYes`exact` when the bases agree as given, `reverse-complement` when they agree flipped
licenceYesthe SPDX identifier the registry states for that part
matchedYeswhether any compared part carries these exact bases
matchesYesevery part that carries these bases — several may, and the registry keeps them apart
coverageYeswhat was and was not compared: the population at this length, the candidates the narrowing produced, how many were read back, and whether the cap stopped it. A null answer is only as strong as this.
descriptionYesthe registry’s own prose — the half a coordinate cannot tell you

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, open-world, and non-destructive behavior. The description adds that it queries the remote iGEM Registry, compares actual bases rather than names, and returns part description, Sequence-Ontology role, citation, and license; it does not discuss rate limits or cap behavior, which the schema covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose and followed by clear use cases. Every clause earns its place and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema and annotations that cover safety and external interaction, and the input schema fully documents all parameters. The description supplies the purpose, matching logic, and returned fields, so an agent has enough context to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are documented in the schema, including name's narrowing role and cap's limit. The description reinforces that bases decide the match, but this is already stated in the schema, and cap is not mentioned at all, so the description adds little parameter-level meaning beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: identify a DNA stretch by asking the iGEM Registry which published part carries exactly those bases. It also explicitly distinguishes sequence-based identification from name-based lookup, so an agent can tell it apart from sibling tools like lookup_gene or search_records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names two concrete scenarios: labeling an assembled fragment or verifying that a feature is the part it is called. It does not name alternative tools or state when not to use this tool, so it provides clear context but no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

melting_temperatureB
Read-only
Inspect

The melting temperature of an oligo IN A BUFFER, UNDER A MODEL — and the working, not just the number. Nearest-neighbor (SantaLucia & Hicks 2004 · Allawi & SantaLucia 1997 · Sugimoto 1996 · Breslauer 1986), pydna's dsDNA-binding-domain model, the GC formula, the Wallace rule or NEB, over the salt correction you name, then DMSO and formamide depression under the published model you name. LOCKED NUCLEIC ACID is understood: write the probe as it is ordered, with an L after each locked base (GTCGLAACAGC), and McTigue, Peterson & Kahn's (2004) per-neighbor increments are added to the nearest-neighbor sum. Returns the per-step breakdown the panel shows, so a pipeline can read WHICH coefficient produced a ΔTm rather than a bare temperature.

NameRequiredDescriptionDefault
modelNowhich melting model — nn_santalucia (Nearest-neighbor, SantaLucia 1997) · nn_unified (Nearest-neighbor, unified 2004) · nn_sugimoto (Nearest-neighbor, Sugimoto 1996) · nn_breslauer (Nearest-neighbor, Breslauer 1986) · nn_rna_xia (RNA/RNA, Xia 1998) · nn_rna_chen (RNA/RNA, Chen 2012 (GU wobble)) · nn_rna_freier (RNA/RNA, Freier 1986) · nn_hybrid_sugimoto (RNA/DNA hybrid, Sugimoto 1995) · bresluc_dbd (Breslauer (dsDNA-binding polymerase)) · gc (GC-based (Tm_GC)) · wallace (Wallace rule (2·AT + 4·GC)) · neb (NEB). Advanced.nn_unified
oligoYesthe oligo to melt, 5'→3'. IUPAC ambiguity codes and whitespace are tolerated; at least 2 bases. An L after a base marks it LOCKED (LNA), e.g. GTCGLAACAGC — the marker is not a base and does not count toward the length.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
conditionsNothe buffer this temperature is measured in: Na⁺/K⁺/Tris/Mg²⁺/dNTP under `salt`, the strand concentrations under `oligo`, and any DMSO or formamide under `additives`. Left unset it is filled from your reaction-conditions settings, which is what the Melting Temperature panel is showing, so the two doors cannot quote different temperatures for one oligo. Advanced.
dmso_methodNowhich published DMSO depression — ahs01 (Ahsen et al. (2001), 0.75 °C per %) · mus81 (Musielski et al. (1981), 0.6 °C per %) · cul76 (Cullen and Bick (1976), 0.5 °C per %) · esc80 (Escara and Hutton (1980), 0.675 °C per %). Only read when the conditions carry DMSO. Only applies when dmso is set. Advanced.ahs01

Output Schema

NameRequiredDescription
gcYesGC content [%] of the oligo, weighted for ambiguity codes
tmYesmelting temperature [°C] after every correction the conditions asked for
modelYesthe model that produced it, named — never the id alone
stepsYesthe derivation, one row per correction: the base model with its table and salt method, then each additive with the degrees it removed AND the published model that set the coefficient — the same rows the panel prints, from the same generator
baseTmYesthe temperature BEFORE any additive, so a pipeline can see what DMSO or formamide cost rather than inferring it
caveatYeswhy this model's number should not be read for an oligo of this length, or empty when it can be — Wallace above its published 14–20 nt domain is the case this exists for
lockedBasesYeshow many bases of this oligo were read as LOCKED (LNA). 0 for ordinary DNA, so a pipeline can tell whether McTigue's increments were in play without parsing the steps
thermodynamicsYesΔH, ΔS and ΔG(37 °C) from the SAME table as the temperature, so a row never mixes two models. Absent for models that carry no nearest-neighbor table (GC formula, Wallace, NEB)

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, non-destructive, closed-world behavior. The description adds useful behavioral context beyond that: it returns the per-step breakdown rather than a bare number, understands LNA notation, and fills unset conditions from reaction settings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key purpose is front-loaded, but the description is a dense paragraph with long citation lists and model enumerations that duplicate the schema. Several clauses could be trimmed without losing actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, output schema, and annotations, the description covers the essential computation, model selection, LNA handling, and return behavior. The main gap is that it does not situate the tool against closely related melting-curve/profile tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents model choices, salt conditions, LNA notation, and additive methods in detail. The description repeats much of that parameter meaning rather than adding syntax or constraints not already present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: computing the melting temperature of an oligo in a buffer under a named model, with per-step working returned. It is much clearer than a tautology, but it does not explicitly distinguish itself from siblings such as melt_profile or analyze_melt_curves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool computes but gives no when-to-use guidance, no exclusions, and no named alternatives. An agent is left to infer that this is the single-Tm calculator rather than the profile/curve tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

melt_profileA
Read-only
Inspect

DNA melting behaviour of the subject by the Poland–Scheraga model (DECIPHER): the melt curve (mean helicity vs temperature), its Tm50, and the cooperatively-melting domains behind each HRM peak.

NameRequiredDescriptionDefault
ionsNomolar sodium-equivalent concentration. Defaults to DECIPHER's own 0.2 M; the editor substitutes the project's shared Na⁺ instead. In M.
stepNogrid spacing; finer costs proportionally more. In °C.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_tempNohighest temperature to evaluate. In °C.
min_tempNolowest temperature to evaluate. In °C.
region_endNo0-based inclusive end. Unset = the whole sequence. Advanced.
region_startNo0-based inclusive start of the region to melt. Unset = the whole sequence; pass the selection's start to scope to it. Advanced.

Output Schema

NameRequiredDescription
tm50Yestemperature where mean helicity crosses 0.5 (null if the range never crosses it)
curveYesmean helicity per temperature
hrmPlotYesthe HRM trace as a plot: −dθ/dT against temperature, one peak per melting domain
meltPlotYesthe melt curve as a plot: mean helicity against temperature
derivativeYes−dθ/dT, the HRM trace
domainCountYesnumber of cooperatively-melting domains
transitionsYesmelting domains (one peak each)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, non-destructive, and closed-world, so safety is covered. The description usefully discloses the underlying algorithm (Poland–Scheraga via DECIPHER), which tells an agent what model assumptions underlie the numbers. It adds nothing about cost, ion-correction caveats, or limits, though the schema covers the cost note for `step`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states method, then outputs in a natural reading order. Dense but free of filler; the HRM-peak clause is slightly jargon-heavy for an agent without domain context but still informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description only needs to frame what comes back, which it does (curve, Tm50, domains). All eight parameters are schema-documented, nothing is required, and the model is identified. The only gap is a pointer to the sibling tools for simpler Tm queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the nested `_subject`/`_files` shapes are documented inline, so the schema carries the parameter burden. The description adds no parameter-level guidance (e.g. how min_temp/max_temp relate to the reported Tm50 or how region_start/end scope the melt), so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific computation (DNA melting profile, Poland–Scheraga/DECIPHER) and enumerates its outputs: melt curve of mean helicity vs temperature, Tm50, and cooperatively-melting domains per HRM peak. It is clearly not a generic melting-temperature lookup. However, it never names or contrasts the obvious siblings (melting_temperature, analyze_melt_curves), so full sibling differentiation is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the output description – an agent can infer this is the tool for a full melt curve plus HRM domain decomposition – but there is no explicit when-to-use, when-not-to-use, or pointer to melting_temperature/analyze_melt_curves as alternatives. Nothing is misleading, but the routing work is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

miqe_checklistA
Read-only
Inspect

The MIQE 2.0 checklist for a qPCR paper (Bustin et al. 2025, Clin Chem 71:634, Table 1): every item in its five sections, with your answers. Each answer is Provided (yes or no) and Description/Justification: where in the article when yes, why it is omitted when no; an answer missing that is named. Returns every row, the counts and a TSV under the paper's headers. Run with no answers to read the item ids. Digital PCR has its own checklist, dMIQE 2020.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
answersNoanswers by item id, e.g. {"5.8": {"provided": "yes", "description": "Results, Table 2: standard curve over five tenfold dilutions"}, "3.5": {"provided": "no", "description": "DNase-treated RNA validated DNA-free"}}. Ids run section.item over the paper's order (1 Reagent preparation · 2 Sample preparation · 3 Reverse transcription · 4 qPCR protocol · 5 Data analysis).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
tsvYesthe checklist as tab-separated text under the paper's own column headers, for a journal submission
rowsYesone row per item, in the paper's order: section, id, item, footnotes, provided, description, and the gap footnote b would still send back
notesYesthe table's footnotes by letter, which qualify the items that carry them
totalYesitems in the checklist
readingYeswhat is answered and what is still owed, generated from the answers
answeredYesitems answered yes or no
incompleteYesanswers without the location (yes) or reason (no) the checklist asks for

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description still adds real behavior: it names the output shape (every row, counts, TSV under the paper's headers) and discloses validation semantics ('an answer missing that is named'). It does not state that nothing is persisted, which would have closed the loop for a mutation-looking input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded, and each sentence carries information (sections, answer format, return shape, id-enumeration mode, dPCR redirect). The prose is dense and semicolon-heavy with one awkward fragment ('an answer missing that is named'), which costs it the top mark.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-object, 3-param tool with an output schema, the description supplies purpose, answer schema semantics, usage mode and output form, so an agent can invoke it correctly. It deliberately (and acceptably) duplicates some return detail the output schema already covers rather than omitting anything essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the answers/_files/_subject params are all richly documented in the schema itself, so the baseline is 3. The description reinforces the answer model (Provided yes/no plus Description/Justification) and the missing-answer rule, but adds little beyond the schema and says nothing about _files/_subject semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific artifact (the MIQE 2.0 checklist, Bustin et al. 2025, Table 1) and states its scope: every item across five named sections, filled in with the user's answers. It is clear what the tool produces without opening the schema, though the 'action' is expressed as a noun-phrase checklist rather than a crisp verb+resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit operating mode ('Run with no answers to read the item ids') and routes dPCR users away to dMIQE 2020, which is genuine when-to-use / when-not guidance. It does not address sequencing/submission siblings (e.g. build_ena_submission) that might also be in play, 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.

multiplex_pcrB
Read-only
Inspect

Screen a primer POOL against one or more templates: every predicted product, per-primer off-target binding, the pairs that tell templates apart on a gel, and the all-against-all primer-dimer matrix a pool actually lives or dies by (pydna primer_screen + primer3 thal).

NameRequiredDescriptionDefault
poolNoalso partition the screened reactions into compatible tubes (MultiPLX grouping), judged by the preset and cutoffs below.
limitNominimum 3' footprint match for a primer to be considered bound (pydna's own default is 16). In bp.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
primersNothe primer pool — literal sequences, or wire primer outputs from upstream design nodes.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_sizeNolargest product to report. In bp.
min_sizeNosmallest product to report. In bp.
templatesNoextra templates to screen against — wire records or name library documents (the subject is included by default).
conditionsNothe reaction buffer every temperature here is computed in - Na+/K+/Tris/Mg2+/dNTPs, the primer concentration, the salt-correction method and the melting model. Left unset it is filled from your reaction-conditions settings, so this node and the PCR panel describe ONE tube; with neither it falls back to pydna's Taq defaults, which is what every golden was captured under. Advanced.
max_groupsNomost tubes the pool may be split into. Only applies when pool is true.
cutoffs_offNocutoffs to switch off (not applied at all), whatever the preset says. Only applies when pool is true. Advanced.
pool_presetNowhich authority's limits a tube is judged by: MultiPLX's three stringencies, or primer3's own structural limits (calibrated for the ΔG engine computing the scores). Only applies when pool is true.normal
max_per_groupNomost reactions one tube may hold. Only applies when pool is true.
include_subjectNoscreen against the node's subject as a template.
cutoff_max_tm_diffNoPrimer Tm spread [°C]: Largest primer Tm difference allowed inside a tube: one annealing temperature has to work for every reaction in it. Unset keeps the preset's value. In °C. Only applies when pool is true. Advanced.
cutoff_prim_prim_anyNoPrimer–primer, anywhere [kcal/mol]: Any duplex between two primers. Not extendable on its own, but it takes primer out of the reaction. Unset keeps the preset's value. In kcal/mol. Only applies when pool is true. Advanced.
cutoff_prim_prod_anyNoPrimer–product, anywhere [kcal/mol]: Any duplex between a primer and another reaction’s amplicon. Unset keeps the preset's value. In kcal/mol. Only applies when pool is true. Advanced.
cutoff_prim_prim_end1NoPrimer–primer, one 3′ end [kcal/mol]: One primer's 3′ end anneals anywhere on the other. Extendable, so it competes with the template. Unset keeps the preset's value. In kcal/mol. Only applies when pool is true. Advanced.
cutoff_prim_prim_end2NoPrimer–primer, both 3′ ends [kcal/mol]: A blunt 3′–3′ dimer: each primer can extend on the other, so the pair consumes itself and makes a short artefact band. Unset keeps the preset's value. In kcal/mol. Only applies when pool is true. Advanced.
cutoff_prim_prod_end1NoPrimer–product, 3′ end [kcal/mol]: A primer's 3′ end annealing inside another reaction's amplicon: it primes on the wrong molecule. Unset keeps the preset's value. In kcal/mol. Only applies when pool is true. Advanced.
cutoff_max_prod_len_diffNoBand spread (range) [bp]: Products in one tube must differ by no more than this, so one extension time suits them all. Unset keeps the preset's value. In bp. Only applies when pool is true. Advanced.
cutoff_min_prod_len_diffNoBand separation (ladder) [bp]: Products in one tube must differ by at least this much, or the bands co-migrate and you cannot tell which reaction worked. Unset keeps the preset's value. In bp. Only applies when pool is true. Advanced.
cutoff_max_prim_prim_any_tmNoCross-dimer Tm, anywhere [°C]: primer3's own limit, on the scale our ΔG engine is calibrated for. A dimer melting above this competes with template annealing. Unset keeps the preset's value. In °C. Only applies when pool is true. Advanced.
cutoff_max_prim_prim_end_tmNoCross-dimer Tm, 3′ end [°C]: primer3's limit for the 3′-end dimer: the configuration that extends. Unset keeps the preset's value. In °C. Only applies when pool is true. Advanced.

Output Schema

NameRequiredDescription
poolsYeswith `pool` on: the tubes, the per-tube verification, and a refusal naming the limit and pair that forced it when no partition fits
dimerMapYesthe all-against-all dimer ΔG as a heatmap, the most stable structure each pair forms anywhere along the oligos
ampliconsYesevery predicted product (which pair, which template, what size)
poolCountYeswith `pool` on: how many tubes the partition needed (0 when it refused)
crossDimersYesall-against-all primer-dimer matrix, or null with fewer than two primers
diagnosticsYespairs that discriminate the templates by product size
primerStatsYesper-primer binding counts, including off-target
ampliconCountYesnumber of predicted products

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful algorithmic context (pydna primer_screen + primer3 thal) and output content, but does not disclose permissions, rate limits, or other behavioral traits beyond what the annotations and output schema already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence beginning with the core action. It is dense and slightly run-on, and the parenthetical '(pydna primer_screen + primer3 thal)' could be seen as implementation detail, but every clause contributes to describing the tool's output scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (24 parameters, nested objects) and the presence of a rich output schema, the description is minimally adequate. It omits any mention of the major 'pool' grouping mode, subject inclusion, and most parameter semantics, relying entirely on the schema for those details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 24 parameters, including cutoffs and conditions. The description itself adds no parameter-level meaning beyond what is already in the schema, making the baseline score of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Screen) and resource (a primer POOL against one or more templates) and enumerates the computed outputs: predicted products, off-target binding, gel-distinguishing pairs, and primer-dimer matrix. It clearly identifies a multiplex screening operation, though it does not explicitly distinguish itself from sibling tools like check_primer_specificity or primer_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives, nor any when-not-to-use condition. The phrase 'a pool actually lives or dies by' is colorful justification, not operational guidance for selecting this tool over siblings such as design_primer_pairs or pcr_amplify.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notebook_cross_refsA
Read-only
Inspect

Extract @plasmid / !action / &gel cross-references from a lab-notebook markdown body.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
body_mdYesthe notebook entry body (markdown).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
gelsYes&gel references
actionsYes!action references
plasmidsYes@plasmid references

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description adds no behavioral context beyond the parse itself (no note on empty results, malformed tokens, or deduplication), which is the minimum viable level given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the verb and the recognized token patterns front-loaded, and zero filler. Nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be explained, and annotations cover the safety profile. The description is nearly complete for a pure read-only extractor, though it omits any handling notes for malformed or absent reference tokens.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: the recognized cross-reference token syntaxes (@plasmid, !action, &gel). That tells the agent what content in body_md will actually be matched, which is genuinely useful beyond field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Extract') and resource ('cross-references') and even names the exact reference syntaxes (@plasmid / !action / &gel), so an agent knows precisely what this returns. It does not name a sibling, but no other tool in the list appears to perform notebook reference extraction, so differentiation is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from a lab-notebook markdown body' implies the input context, but there is no explicit when-to-use, when-not-to-use, or prerequisite guidance. An agent is left to infer that this is for parsing notebook entries rather than, e.g., validating them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

number_antibodyA
Read-only
Inspect

Find antibody and T-cell-receptor variable domains in a protein sequence, number them under IMGT, Kabat, Chothia, Martin, AHo or Wolfguy, call chain type and species, and assign the closest V and J germline with percent identity. Validated against ANARCI 2026.2.13.2 on every chain of its PDB benchmark.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
schemeNonumbering scheme. Values: imgt (IMGT), kabat (Kabat), chothia (Chothia), martin (Martin (enhanced Chothia)), aho (AHo), wolfguy (Wolfguy).imgt
proteinYesthe protein sequence (one-letter amino acids); may hold several domains, e.g. an scFv.
speciesNospecies whose HMMs are preferred for the hit and whose germlines are searched (ANARCI's default: human and mouse).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
chainTypesNochain types to number: H, K, L (antibody); A, B, G, D (TCR). Others are still listed in the hit table.
cdrDefinitionNowhere CDR1-3 begin and end (abnumber's borders; North is read in Chothia numbering). Kabat, Chothia and North define H, K and L chains only; TCR domains keep IMGT's. Values: imgt (IMGT), kabat (Kabat), chothia (Chothia), north (North).imgt
assignGermlineNoassign the closest V and J germline genes.
bitScoreThresholdNominimum HMMER bit score for a domain to count (ANARCI's default 80).

Output Schema

NameRequiredDescription
hitsYesevery HMM hit over the threshold: id, E-value, bit score, start, end
domainsYesone entry per domain: chain type, species, sequence span, numbering as [position, residue] pairs, framework and CDR regions (0-based residue spans) under cdrDefinition, germlines
chainTypesYesthe chain type of each domain, in sequence order

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds a validation/quality signal (ANARCI 2026.2.13.2, benchmarked on PDB chains) but says nothing beyond the annotations about failure modes, sensitivity to short or non-Ig sequences, or what an unnumbered domain implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste, and the primary capability is front-loaded before the backend validation caveat. The first sentence is clause-dense but every clause names a distinct capability rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter coverage, the description does not need to explain return values, and it adequately conveys the tool's full pipeline. The remaining gap is the lack of positioning against sibling antibody tools and of any input-type guidance for the record/_subject parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (scheme, chainTypes, cdrDefinition, bitScoreThreshold, species, assignGermline) is already documented in the schema itself. The description restates the numbering scheme concept but adds no syntax, defaults, or edge-case meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource pair ('Find antibody and T-cell-receptor variable domains in a protein sequence') and then enumerates the full output scope: numbering under six schemes, chain-type/species calls, and V/J germline assignment with percent identity. This clearly separates it from siblings like humanize_antibody, graft_antibody_cdrs, antibody_liabilities, and antibody_molecule, which an agent can distinguish 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool produces but gives no explicit when-to-use guidance, prerequisites, or named alternatives among the many sibling antibody tools. Usage is only implied by the domain ('variable domains in a protein sequence'), so an agent must infer the routing decision itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

optimize_sequenceAInspect

Run the DnaChisel optimizer over the subject with real constraints/objectives (GC window, pattern avoidance, translation enforcement, …). Emits the optimized sequence as a NEW record for downstream nodes.

NameRequiredDescriptionDefault
seedNobase seed for the alternatives — the same seed returns the same set. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
candidatesNohow many alternative solutions to produce (1 = a single solve). Candidate 1 is the plain unseeded answer; the rest run at seed+1, seed+2, …, so a listed alternative can be asked for again. Max 12.
objectivesNoDnaChisel objective specs — soft goals the solver maximises. Same `kind` values as constraints: EnforceTranslation, AvoidPattern, EnforceGCContent, AvoidHairpins, AvoidRareCodons, UniquifyAllKmers, CodonOptimize, EnforceSequence, AvoidChanges, EnforceChoice, EnforcePatternOccurence, AvoidStopCodons, EnforceMeltingTemperature, EnforceChanges, EnforceTerminalGCContent, SequenceLengthBounds, EnforceRbsStrength, AvoidHeterodimerization, AllowPrimer, EnforceRegionsCompatibility, AvoidMatches, AvoidBlastMatches.
constraintsNoDnaChisel constraint specs, e.g. [{"kind":"EnforceGCContent","mini":0.4,"maxi":0.6,"window":50}] — hard requirements the solution must satisfy. Valid `kind` values: EnforceTranslation, AvoidPattern, EnforceGCContent, AvoidHairpins, AvoidRareCodons, UniquifyAllKmers, CodonOptimize, EnforceSequence, AvoidChanges, EnforceChoice, EnforcePatternOccurence, AvoidStopCodons, EnforceMeltingTemperature, EnforceChanges, EnforceTerminalGCContent, SequenceLengthBounds, EnforceRbsStrength, AvoidHeterodimerization, AllowPrimer, EnforceRegionsCompatibility, AvoidMatches, AvoidBlastMatches.
randomization_thresholdNoDnaChisel `randomization_threshold` (default 10000). LOWER it to force the stochastic search: an objective-driven problem is deterministic, so without this every candidate comes back identical. Advanced.

Output Schema

NameRequiredDescription
nEditsYesnucleotides changed
recordYesthe optimized sequence as a record
gcAfterYesGC fraction after optimization
successYesall hard constraints satisfied
caiAfterYesCAI after optimization, or null when not computable (no codon table to score against): a 0 would read as the worst possible adaptation
distinctYeshow many of the candidates are DIFFERENT sequences — 1 means the problem has a single answer, not that the run failed. The engine omits it for a single-candidate run, where it is 1 by definition
sequenceYesthe optimized sequence
gcProfileYeswindowed GC before and after, at each window's centre: the stretches the solver moved, which the two whole-sequence GC numbers average away
candidatesYesevery alternative solution: its seed, sequence, edit count, GC and CAI — compare them before choosing. Empty unless `candidates` asks for more than one

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-destructive, non-read-only, closed-world operation. The description adds useful context that it emits a NEW record for downstream nodes, but does not mention whether the original subject is preserved, runtime/expense, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no waste. The action and scope come first, followed immediately by the output consequence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex optimizer with a full input schema and an output schema, the description covers the essential purpose, input nature, and output creation. It is nearly complete, though it could better position the tool against sibling sequence-design alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is already well documented in the schema. The description only gestures at subject and constraints/objectives, adding little beyond the detailed schema descriptions for seed, candidates, and randomization_threshold.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Run the DnaChisel optimizer') and resource ('the subject'), plus the key inputs (constraints/objectives) and output behavior ('optimized sequence as a NEW record'). It is clear but does not explicitly distinguish itself from nearby sequence-design siblings such as back_translate or codon_optimality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'with real constraints/objectives' implies the intended use case for hard requirements and soft goals. However, it gives no explicit when-to-use guidance, exclusions, or alternatives among the many sequence-design tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pcr_amplifyAInspect

Amplify the subject template with a forward + reverse primer (pydna Anneal). Emits the first product as a NEW sequence record so downstream tools (digest, gel, map) operate on the amplicon, not the template — the tool→tool hand-off.

NameRequiredDescriptionDefault
dmsoNoDMSO in the reaction, % (v/v) — depresses every primer Tm and therefore the annealing temperature. In %. Advanced.
limitNomin 3' footprint match length (pydna `limit`). In bp. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
forwardYesforward primer 5'→3'.
reverseYesreverse primer 5'→3'.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
nn_tableNonearest-neighbour table the Tm and Ta are computed on. Left unset it is the panel's own default, SantaLucia & Hicks 2004 unified. Values: DNA_NN1 (Breslauer 1986), DNA_NN2 (Sugimoto 1996), DNA_NN3 (Allawi & SantaLucia 1997), DNA_NN4 (SantaLucia & Hicks 2004 (unified)), RNA_NN1 (Freier 1986 (RNA/RNA)), RNA_NN2 (Xia 1998 (RNA/RNA)), RNA_NN3 (Chen 2012 (RNA/RNA, GU wobble)), R_DNA_NN1 (Sugimoto 1995 (RNA/DNA hybrid)). Advanced.DNA_NN4
conditionsNothe reaction buffer every temperature here is computed in - Na+/K+/Tris/Mg2+/dNTPs, the primer concentration, the salt-correction method and the melting model. Left unset it is filled from your reaction-conditions settings, so this node and the PCR panel describe ONE tube; with neither it falls back to pydna's Taq defaults, which is what every golden was captured under. Advanced.
dmso_modelNowhich published DMSO depression to apply; they disagree by 2 °C at 8% DMSO, so a Tm quoted without naming one is not reproducible. Values: ahs01 (Ahsen et al. (2001)), mus81 (Musielski et al. (1981)), cul76 (Cullen and Bick (1976)), esc80 (Escara and Hutton (1980)). Only applies when dmso is set. Advanced.ahs01
end_lengthNo3'-most bases that must pair exactly whatever the mismatch budget (QUEEN `endlength`) — a polymerase extends from a paired 3' terminus, so this is not negotiable by the budget. Advanced.
mismatchesNosubstitutions a primer may carry and still prime (QUEEN `{s<=N}`). 0 is pydna's exact search, which is what the panel opens on and what every golden was captured under. Advanced.
inner_forwardNonested PCR: the inner forward primer 5'→3'. With `inner_reverse`, `forward`/`reverse` are the outer pair and every output below describes ROUND 2. Advanced.
inner_reverseNonested PCR: the inner reverse primer 5'→3'. Advanced.
dimer_thresholdNothe dimer-free cut-off `primerDimerScore` is judged against (PCR-35). The default is the value PrimerROC publishes, which that paper fitted on its own gels and says is specific to its PCR conditions — refit it on your own gel-scored pairs with `primerRocFit` rather than guessing one. Advanced.

Output Schema

NameRequiredDescription
recordYesthe amplicon as a sequence record (subject for downstream nodes)
sequenceYesamplicon sequence 5'→3'. Empty when the pair made no product
conditionsYesthe buffer every temperature here was measured in — salt, magnesium, dNTPs, oligo concentration, the salt-correction method and the NN table — or a note saying pydna's defaults were used
forwardTmCYesforward primer melting temperature, under the table and additives set above
reverseTmCYesreverse primer melting temperature
productCountYesnumber of products (>1 = non-specific pair)
crossDimerTmCYesthe forward x reverse 3'-end cross-dimer temperature — the primer-dimer that extends into a band. 0 when no such dimer exists, and a value far below the 35 °C limit is still a real structure: this is the number to compare pairs on, because the boolean beside it only reports primer3's design cutoff
annealingTempCYesannealing temperature for the first product, under the Taq convention. Null when the pair made no product
primerDimerRiskYestrue when the pair breaks one of primer3's own cross-dimer limits (35 °C at a 3' end, 45 °C anywhere) — branch a workflow on this rather than re-deriving it. FALSE IS NOT 'no dimer': those limits are primer3's design filter, and graded against 48 gel-tested pairs (Johnston et al., Sci Rep 9:209, 2019) they flag none of the 23 that produced a visible primer-primer band. Read `crossDimerTmC` beside it rather than branching on this alone
primerDimerScoreYesPrimerDimer's score for the pair (Johnston et al., Sci Rep 9:209, 2019: one hetero- and both homodimers, the most negative kept, clipped at 0). Lower is more dimer-prone. On 48 gel-tested pairs it separates real primer-dimer bands better than the thal Tm beside it (AUC 0.842 against 0.727), and on the paper's own 319 gel-scored pairs it reads 0.961 against 0.750. Read `primerDimerVerdict` beside it for the published cut-off rather than inventing a threshold. Null when a primer carries a base other than A, C, G or T
primerDimerCutoffYesthe dimer-free cut-off `primerDimerVerdict` was read against, so a turn never has to assume which threshold produced the verdict. -4.43 is the published value, fitted on the paper's own PCR conditions
primerDimerVerdictYestrue when `primerDimerScore` falls BELOW PrimerROC's dimer-free cut-off, which is the paper's own verdict rather than primer3's design filter (Johnston et al., Sci Rep 9:209, 2019). The cut-off defaults to the published -4.43 and is the `dimerThreshold` input: the paper fitted it on its own gels and says so, so a lab with its own gel data refits it with `primerRocFit`. Branch on this for the dimer question and on `primerDimerRisk` for the would-primer3-reject-this question — they answer different things. Null when a primer carries a base other than A, C, G or T
round1ProductCountYesnested PCR only: how many products the OUTER pair made in round 1 (the first one is re-amplified). Absent for a single-round run

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-destructive, non-open-world operation, so the description does not need to restate safety. It does add the behavior that matters: the output is a NEW sequence record, and only the FIRST product is emitted — a real caveat when amplification yields multiple products. It stays silent on the nested/round-2 mode and on the Tm/Ta computation the advanced parameters drive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and immediately followed by the consequence that matters most (downstream tools act on the amplicon, not the template). No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a rich schema and an output schema, the description covers the one thing structured fields cannot: that the result is a new record and that only the first product is returned. It leaves out only the advanced modes (nested PCR, mismatch budget), which the schema handles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 14 parameters in depth (including nested PCR via inner_forward/inner_reverse and the conditions object). The description only names forward/reverse and adds no extra semantics beyond the schema, which is the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Amplify the subject template with a forward + reverse primer') and pins the engine (pydna Anneal). It does not name sibling tools it competes with (design_primers, multiplex_pcr, fusion_pcr), so an agent must infer the split itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use it when you already have a primer pair and want the amplicon rather than a designed primer. There is no explicit when-not clause and no named alternative, e.g. that primer design belongs to design_primer_pairs or that multi-template reactions belong to multiplex_pcr.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

peptide_massA
Read-only
Inspect

Monoisotopic and average mass of a peptide, and its m/z at each charge state (validated against pyteomics). Plain one-letter sequences also take an ion type (b, y, c, z, a, x and their neutral-loss forms); a ProForma peptidoform with modification tags, as masses or Unimod names and accessions (e.g. [TMT6plex]-PEPTM[Oxidation]IDE, M[UNIMOD:35], M[+15.994915]), is weighed monoisotopically with its modifications.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
chargesNocharge states to report m/z for (positive integers).
ionTypeNoweigh the peptide as this ion; M is the intact molecule. Plain sequences only.M
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceYespeptide: one-letter residues, optionally ProForma tags on residues and termini (a signed mass, a Unimod name, or UNIMOD:accession).

Output Schema

NameRequiredDescription
mzYesper charge: monoisotopic and average m/z
averageYesneutral average mass (Da); null for a peptidoform with modification tags
monoisotopicYesneutral monoisotopic mass (Da)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a read-only, non-destructive, closed-world calculation. The description adds meaningful behavioral context beyond that: it reports both monoisotopic and average mass, supports m/z at multiple charge states, validates against pyteomics, and treats ProForma modifications monoisotopically. It does not contradict 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main calculation and then adds the sequence-format distinctions that matter for correct invocation. It is dense but not wasteful; the ProForma examples earn their space by clarifying valid input syntax.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and parameter descriptions are complete, so the description does not need to explain return values or every nested parameter. It covers the non-obvious input modes and modification syntax well. The main remaining gap is the absence of explicit guidance about related tools and when this one is preferred.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description usefully adds semantic detail beyond the schema: charge states, ion types for plain sequences, and concrete ProForma modification examples as masses or Unimod identifiers. Nested record-reference parameters such as _subject and _files are left largely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific calculation over a specific resource: monoisotopic and average peptide mass plus m/z at each charge state. It also distinguishes plain one-letter sequences from ProForma peptidoforms with modifications. It does not explicitly name or rule out close siblings such as fragment_ions or isotope_envelope, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is clearly implied: calculate peptide mass/m/z, use ionType for plain sequences, and use ProForma syntax for modified peptidoforms. However, there is no explicit when-to-use guidance, no when-not-to-use guidance, and no named alternatives among the many related sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pick_firstA
Read-only
Inspect

Rejoin two branches: takes the outputs of several conditional steps and emits the first one that actually ran. This is how a two-way branch comes back together: wire both arms in, and whichever arm ran is what continues.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
valuesNothe branches to choose between, in preference order. Wire one output from each arm.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
fallbackNowhat to emit when NO branch ran. Leave empty to make that an error instead, which is usually what you want, because silently continuing with nothing is how a pipeline reports a result it never computed.

Output Schema

NameRequiredDescription
indexYeswhich branch it came from (0 = the first wired)
valueYesthe first branch that produced anything
recordYesthe same value when it is a record, so it can drive a downstream $subject
ranCountYeshow many branches produced anything. More than 1 means the conditions were not exclusive

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and a closed world, so safety is covered. The description adds the useful selection semantic ('first one that actually ran'), but says nothing about the error behavior when no branch ran or what happens with the fallback, which only surfaces in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action, and nothing extraneous. The second sentence partially restates the first ('how a two-way branch comes back together'), a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% schema coverage on all four parameters, the description need not explain return values or param formats. It gives the conceptual model an agent needs to place this node in a pipeline; only the no-branch/failure path relies on the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, including the fallback-vs-error choice. The description only loosely gestures at the values parameter via 'wire both arms in' and adds no syntax or ordering detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it rejoins branches and emits the first branch that ran. The control-flow role is unambiguous. There is no competing sibling (no pick_last or merge alternative), so sibling differentiation is moot, keeping it just 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear wiring context: 'wire both arms in, and whichever arm ran is what continues,' which tells the agent exactly when to reach for it. It stops short of explicit when-not-to-use or alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_master_mixA
Read-only
Inspect

Scale one PCR reaction into a master mix for N reactions plus overage. Starts from a vendor's own published reaction setup (scaled to any reaction volume in proportion to the vendor's columns, so every final concentration is the vendor's, with water making up the volume and the template added per tube), or from your own component list. Returns each component per reaction and in the mix, the mix to dispense per tube and the total to prepare.

NameRequiredDescriptionDefault
setupNothe vendor reaction setup to scale. Ignored when `components` is given. Values: neb-phusion-m0530 (Phusion High-Fidelity DNA Polymerase (M0530)), takara-taq-r001a (TaKaRa Taq (R001A)), takara-ex-taq-rr001a (TaKaRa Ex Taq (RR001A)), takara-la-taq-rr002a (TaKaRa LA Taq (RR002A)), takara-ex-premier-rr370a (TaKaRa Ex Premier (RR370A)), primestar-gxl-r050a (PrimeSTAR GXL (R050A), standard protocol), primestar-gxl-r050a-rapid (PrimeSTAR GXL (R050A), rapid protocol), primestar-hs-r010a (PrimeSTAR HS (R010A)), primestar-max-r045a (PrimeSTAR Max (R045A)), primestar-longseq-r055a (PrimeSTAR LongSeq (R055S/R055A)), cloneamp-hifi-639298 (CloneAmp HiFi PCR Premix (639298)), speedstar-hs-rr070a (SpeedSTAR HS (RR070A)), terra-direct-639270 (Terra PCR Direct Polymerase Mix (639270)), titanium-taq-639208 (Titanium Taq DNA Polymerase (639208)), advantage-hd-639241 (Advantage HD Polymerase Mix (639241)), qiagen-taq-201203 (QIAGEN Taq DNA Polymerase (201203)), qiagen-hotstartaq-203203 (QIAGEN HotStarTaq DNA Polymerase (203203)). Only applies when components is not given.neb-phusion-m0530
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
overageNoextra mix for pipetting loss, as a percent of the N-reaction volume. In %.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
mg_finalNototal Mg²⁺ in the reaction, mM, reached by adding the vendor's 25 mM MgCl2 on top of what the buffer holds. Unset uses the vendor's default. Offered by QIAGEN Taq DNA Polymerase (201203), QIAGEN HotStarTaq DNA Polymerase (203203). In mM. Only applies when setup is qiagen-taq-201203 or qiagen-hotstartaq-203203.
reactionsNohow many reactions the mix is for.
componentsNoyour own recipe instead of a vendor setup: objects of { name, perReaction (µl), fill (true on the one component that makes up the volume), perTube (true to add it to each tube instead of the mix) }. Advanced.
include_dmsoNoinclude the setup's optional DMSO (3% final). Offered by Phusion High-Fidelity DNA Polymerase (M0530); the setup's notes say when to use it. Only applies when setup is neb-phusion-m0530.
primer_finalNofinal concentration of each primer, µM. Most vendors state primers as a range rather than a volume; unset uses the setup's own value (its single stated value, else the low end of its range). In µM. Only applies when setup is takara-taq-r001a or takara-ex-taq-rr001a or takara-la-taq-rr002a or takara-ex-premier-rr370a or primestar-gxl-r050a or primestar-gxl-r050a-rapid or primestar-hs-r010a or primestar-max-r045a or primestar-longseq-r055a or cloneamp-hifi-639298 or speedstar-hs-rr070a or terra-direct-639270 or advantage-hd-639241 or qiagen-taq-201203 or qiagen-hotstartaq-203203.
primer_stockNoconcentration of your primer stock, µM; each primer's volume is its final concentration diluted from this stock. In µM. Only applies when setup is takara-taq-r001a or takara-ex-taq-rr001a or takara-la-taq-rr002a or takara-ex-premier-rr370a or primestar-gxl-r050a or primestar-gxl-r050a-rapid or primestar-hs-r010a or primestar-max-r045a or primestar-longseq-r055a or cloneamp-hifi-639298 or speedstar-hs-rr070a or terra-direct-639270 or advantage-hd-639241 or qiagen-taq-201203 or qiagen-hotstartaq-203203.
reaction_volumeNovolume of one reaction, µl. Each vendor publishes its setup at one or two volumes (25, 50 or 100 µl; NEB's Phusion at 20 and 50); any volume scales from them. In µl.
template_volumeNotemplate DNA per reaction, µl, added to each tube rather than the mix. The vendor states an amount, not a volume (NEB Phusion: < 250 ng), so the volume is yours. In µl. Only applies when components is not given.
include_q_solutionNoinclude the setup's optional Q-Solution (1x (from the 5x stock) final). Offered by QIAGEN Taq DNA Polymerase (201203), QIAGEN HotStarTaq DNA Polymerase (203203); the setup's notes say when to use it. Only applies when setup is qiagen-taq-201203 or qiagen-hotstartaq-203203.

Output Schema

NameRequiredDescription
rowsYeseach component: name, µl per reaction, µl in the mix (null when added per tube)
mixTotalYesµl of master mix to prepare
multiplierYesreactions × (1 + overage/100)
dispensePerTubeYesµl of master mix to dispense into each tube

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds useful computational behavior: scaling from vendor columns, water making up volume, template added per tube, and returning per-reaction and mix amounts. It does not discuss edge cases or validation limits, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, followed by the two recipe modes and the return shape. The single long parenthetical is dense but earns its place by explaining the scaling logic. There is no redundant restatement of the tool name or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with nested objects, full schema coverage, and an output schema, the description covers both the vendor-setup and custom-component paths and summarizes the return value. Optional parameter details are correctly left to the schema. The main remaining gap is sibling routing rather than invocation completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the extensive parameter descriptions already carry the detailed semantics. The tool description adds only high-level meaning around setup versus components and per-tube template addition. That is appropriately baseline-level when the schema is this complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: scaling one PCR reaction into a master mix for N reactions plus overage. It also names the two recipe sources (vendor setup or own component list). It does not explicitly differentiate the tool from nearby siblings such as plan_thermocycler_program or pcr_amplify, so it stops 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the two input modes but gives no explicit when-to-use guidance, prerequisites, or alternatives. There is no statement about when this tool should be chosen over related PCR planning tools. It is enough to understand the calculation, but not to route reliably among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_next_toolsA
Read-only
Inspect

What can run next, and what each next step would add. Give it a tool whose run just finished (or the output types in hand) and it returns the tools whose own declared inputs those outputs fill, each with the parameter the wire lands on, the question that tool answers, its limits, what grades it, whether it is seeded, asynchronous, writing or leaving the machine, and which of the data files it reads the run in hand already read — so a step that would re-read the same table can be told from one that brings independent evidence. Ask for a target_type and it returns the shortest chains of tools that reach it. The hand-offs are the workflow builder's own port graph, so a step it names is a wire the builder would draw.

NameRequiredDescriptionDefault
afterNothe tool whose run just finished — its declared outputs are what is in hand. Leave unset and give `output_types` instead.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_stepsNolongest chain to consider when a `target_type` is given.
read_onlyNokeep only steps that write nothing.
target_typeNooptional: the output type you want to reach. Returns the shortest chains of tools that get there.
output_typesNothe port types in hand, when no single tool produced them (`sequence`, `record`, `bands`, `sites`, `protocol`, `matrix`, `series`).
independent_onlyNokeep only steps that read none of the data files the finished run read, so each adds its own evidence.

Output Schema

NameRequiredDescription
countYeshow many tools can consume these outputs by their declared types
pathsYesthe shortest chains of tools reaching `target_type`, when one was asked for
toolsYesthe candidates, in catalog order: the parameter each wire lands on, the question that tool answers, its limits, what grades it, and what it reads
messageYeswhat was walked, in words
outputsYesthe types the walk started from
untypedYestools declaring an untyped parameter the builder would let this be wired into — a wire the graph cannot vouch for

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing this as a safe read/planning call. The description adds real context beyond that: returned steps are tagged with seeded/asynchronous status, whether they write or leave the machine, what grades them, and which already-read data files they re-read. It does not cover latency or whether prior run context is required, keeping 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the opening clause and there is no filler about generic benefits. The middle sentence, however, is an overlong clause packing a list of return attributes and the data-file-overlap concept into one breath, which harms scanability. Useful content, but structure could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, nested-schema, closed-world planning tool with an output schema, the description covers both invocation modes and the nature of the returned graph edges. Since an output schema exists, it need not detail return shapes, and its coverage of the input modes is adequate. Error handling and session prerequisites are unaddressed, so not a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds mode-level meaning the schema cannot: `after` vs `output_types` as the mutually-exclusive hand-in, and `target_type` triggering shortest-chain search. It lightly implies `max_steps` bounds chain search but adds no detail on `read_only`/`independent_only` beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific function: given a just-finished tool (or output types), it returns candidate next tools whose declared inputs those outputs fill, and with `target_type` it returns shortest tool chains. This is clearly a workflow-graph traversal/planning tool, distinguishable from `run_workflow` or `validate_workflow`. It stops short of explicitly naming sibling alternatives such as `rank_next_tests`, so it does not reach 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete entry conditions: 'Give it a tool whose run just finished (or the output types in hand)' and 'Ask for a `target_type` and it returns the shortest chains'. That cleanly describes the two invocation modes. It never states when not to use it or which sibling to prefer for adjacent needs, so 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_rnaseq_experimentA
Read-only
Inspect

How many biological replicates an RNA-seq experiment needs when the question is about the WHOLE experiment rather than one gene: the exact negative-binomial test with the per-gene α derived from a target false discovery rate across m genes of which m1 are expected to move (RnaSeqSampleSize 2.23.0, Zhao et al. 2018; the test is Robinson & Smyth 2008's, edgeR's exactTest), or the AVERAGE power across genes whose effects differ, with the FDR controlled (ssizeRNA 1.3.3, Bi & Liu 2016). Give solve_for n to size the experiment or power to score a design. With counts and dispersions from a pilot, the power is computed per gene over that real distribution rather than for one idealised gene. Unlike calculate_rnaseq_power this makes no normal approximation, so it is the one to use at small n or low counts.

NameRequiredDescriptionDefault
mNogenes tested. Only applies when method is exact.
nNobiological replicates in the control group, when solving power. Only applies when solve_for is power.
m1Nogenes expected to be differentially expressed. Only applies when method is exact.
fdrNothe false discovery rate to control across the experiment.
pi0Nothe proportion of genes with no effect. A list asks the question once per proportion, which is how the answer's sensitivity to it is read. Only applies when method is average_power.
countNoλ₀, the average read count for a prognostic gene in the control group. Only applies when method is exact.
max_nNothe largest replicate count to search. Only applies when method is average_power. Advanced.
powerNothe power to reach, when solving n.
sigmaNothe common within-gene standard deviation on that scale. Only applies when method is average_power.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
countsNoa pilot's average read count per gene. With `dispersions`, the power is computed for each of these genes and averaged, instead of for one idealised gene. Only applies when method is exact.
methodNowhich question. `exact` powers one prognostic gene with the exact negative-binomial test at an α derived from the FDR; `average_power` asks what the mean power across genes is when each gene's effect is drawn from a normal. Values: exact (Exact negative-binomial test), average_power (Average power across genes).exact
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
effect_sdNothe spread of those true effects ACROSS genes; 0 would make every gene identical. Only applies when method is average_power.
solve_forNosize the experiment, or score a design you already have. Values: n (Replicates per group), power (Power).n
dispersionNoφ₀, the negative-binomial dispersion of a prognostic gene — the square of the biological coefficient of variation. Only applies when method is exact.
size_ratioNok, the ratio of treatment to control group size. Only applies when method is exact. Advanced.
dispersionsNothe dispersion of each gene in `counts`, in the same order. Only applies when method is exact.
effect_meanNothe mean of the normal each gene's true log-fold-change is drawn from. Only applies when method is average_power.
fold_changeNoρ, the minimum fold change to detect in a prognostic gene. Only applies when method is exact.
normalization_ratioNow, the ratio of the two groups' normalization factors. Only applies when method is exact. Advanced.

Output Schema

NameRequiredDescription
nYesreplicates per group (the control group, when the groups differ)
rowsYeseach (n, power) the search evaluated, one row per n in n order, or every (pi0, n, power) for average power
alphaYesthe per-gene α the FDR target implies
curveYespower against replicates, which is the plot this question is read from
powerYesthe power that number of replicates gives
rCallYesthe R call that reproduces the answer
methodYeswhich of the two questions was answered
solvedYeswhich quantity was solved
perGeneYesthe power of each gene in `counts`, when a pilot distribution was given

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful method transparency: exact negative-binomial test versus average power, FDR control, and the use of pilot counts/dispersions. It omits runtime or failure-mode details, so it is not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and every sentence contributes relevant context. The first sentence is very long and carries multiple parenthetical citations, so it could be split for readability, but there is no wasted content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 21-parameter tool with nested objects and an output schema, the description provides sufficient conceptual guidance. Remaining parameter-level details are handled by the schema, and return values are covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents parameters thoroughly. The description adds conceptual meaning for solve_for, counts/dispersions, and method selection, but does not add formatting or syntax beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific task: planning biological replicate counts or power for an RNA-seq experiment, with the key distinction between a whole-experiment question and a single-gene question. It explicitly contrasts this with the sibling tool calculate_rnaseq_power.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use this tool versus calculate_rnaseq_power: use this one at small n or low counts because it avoids the normal approximation. It also explains how solve_for selects sizing versus scoring a design.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_serial_dilutionA
Read-only
Inspect

Plan a serial dilution: the same fold dilution repeated tube after tube from a stock, each tube made to one volume. Returns the transfer and diluent volumes for every step, each tube's concentration and cumulative dilution, and what each tube holds after giving its transfer to the next.

NameRequiredDescriptionDefault
foldNothe dilution at each step, as a fold (1:10 is 10).
stepsNohow many dilutions to make.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
tube_volumeYesthe volume of each dilution after mixing (transfer plus diluent).
tube_volume_unitNothe unit of the tube volume.µL
stock_concentrationYesconcentration of the stock the series starts from.
stock_concentration_unitNothe unit of the stock concentration, which every tube is reported in.mM

Output Schema

NameRequiredDescription
finalYesthe last tube's concentration, in the stock's unit
tubesYeseach tube: step, concentration, cumulative fold, volume left after its transfer
diluentYesdiluent in each tube, in the tube volume's unit
transferYesvolume moved into each tube, in the tube volume's unit

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides rich behavioral context by explicitly listing the output components: 'transfer and diluent volumes for every step,' 'each tube's concentration and cumulative dilution,' and the contents of the next tube. This level of detail is critical for a planning/simulation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence. While it is highly informative, it is slightly long and dense, but every clause serves to define the operation or its complex output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the input schema is 100% covered and includes complex biological metadata, the description provides the necessary workflow context (what the results will show) to make this tool fully usable without requiring the agent to deduce the output format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema is 100% covered, the description enhances meaning by providing practical definitions for parameters like 'fold' (e.g., 1:10 is 10) and clarifying 'tube_volume' as the total post-mixing volume (transfer plus diluent).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description precisely defines the action ('Plan a serial dilution') and the specific mathematical process ('the same fold dilution repeated tube after tube'), immediately distinguishing it from simple concentration calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool is used for planning a series of dilutions from a stock. However, it provides no guidance on when *not* to use this tool, nor does it mention any alternative tools that handle similar workflows.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_thermocycler_programA
Read-only
Inspect

Plan the cycling programme for an amplicon on a NAMED enzyme, and check the reaction against that manufacturer's own published limits. The extension rate and the denaturation step come from the product's datasheet and protocol manual; the annealing temperature is yours (from design_primers or pcr_amplify), and anything the manufacturer does not publish comes from the pydna-faithful Taq or Phusion/Q5 preset — the result says which numbers came from where. The check reports the product as a percentage of the vendor's stated maximum, the extension time its rate implies, the substitutions expected per molecule and the fraction of molecules that should be error-free, each finding quoting the specification line it rests on.

NameRequiredDescriptionDefault
stepsNo3-step keeps a separate annealing stage; 2-step merges it into the extension, which is what a high-Tm pair allows. `auto` lets the builder decide from the primer Tms. Advanced.auto
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
cyclesNocycles in the main block.
enzymeNothe cataloged product to plan on, or `generic` for the preset alone. Its datasheet supplies the extension rate and, where its manual states one, the denaturation step. Values: generic (Generic preset (no datasheet)), takara-taq (Takara Bio · TaKaRa Taq / EmeraldAmp GT), takara-ex-taq (Takara Bio · TaKaRa Ex Taq / EmeraldAmp MAX), takara-la-taq (Takara Bio · TaKaRa LA Taq), takara-ex-premier (Takara Bio · TaKaRa Ex Premier), primestar-gxl (Takara Bio · PrimeSTAR GXL DNA Polymerase), primestar-hs (Takara Bio · PrimeSTAR HS DNA Polymerase), primestar-max (Takara Bio · PrimeSTAR Max DNA Polymerase Ver.2), primestar-longseq (Takara Bio · PrimeSTAR LongSeq DNA Polymerase), cloneamp-hifi (Takara Bio · CloneAmp HiFi PCR Premix), speedstar-hs (Takara Bio · SpeedSTAR HS DNA Polymerase), terra-direct (Takara Bio · Terra PCR Direct Polymerase Mix), titanium-taq (Takara Bio · Titanium Taq DNA Polymerase), advantage-hd (Takara Bio · Advantage HD Polymerase Mix), qiagen-taq (QIAGEN · Taq DNA Polymerase), qiagen-hotstartaq (QIAGEN · HotStarTaq DNA Polymerase).generic
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
anneal_cYesannealing temperature [°C] for the pair — the Ta the Tm model gave you, not a guess this tool makes. In °C.
touchdownNostart with a touchdown block: the annealing temperature starts high and drops each cycle to the Ta, so early cycles favor the specific product (Korbie & Mattick 2008).
gc_percentYesproduct GC [%], which decides whether the vendor's GC window is cleared. In %.
polymeraseNowhich annealing convention and which preset supplies whatever the datasheet does not. Values: taq (Taq), dbd (Phusion / Q5 (DNA-binding domain)).taq
amplicon_bpYesproduct length [bp] — pcr_amplify and design_primers both emit it.
touchdown_cyclesNotouchdown cycles before the main block (they add to `totalCycles`). Only applies when touchdown is true.
touchdown_delta_cNohow far the annealing temperature drops per touchdown cycle. In °C. Only applies when touchdown is true.

Output Schema

NameRequiredDescription
programYesthe planned programme as a thermocycler would take it, stage by stage
findingsYesthe reaction check: each finding with its severity, its sentence and the vendor line it quotes. Empty for a reaction inside every published limit, and absent entirely for `generic`, which has no limits to check.
denatureCYesper-cycle denaturation temperature [°C] actually planned
denatureSecYesper-cycle denaturation time [s] actually planned
totalCyclesYescycles including any touchdown block
extensionSecYesextension time [s] this amplicon needs at the enzyme's published rate
fromDatasheetYeswhich of the planned numbers came from the product (the rest are the preset’s) — the same list the panel turns into its sentence

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/destructive/openWorld annotations by disclosing data provenance ('the result says which numbers came from where'), the preset fallback chain for unpublished values, and the exact findings the check emits (percent of vendor maximum, implied extension time, substitutions per molecule, fraction error-free, each quoting a specification line). This is materially useful pre-call context for a read-only planner. It still doesn't say what happens when a parameter is out of the vendor's window (error vs. warning).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the plan/check split before drilling into provenance and report contents. Dense but each sentence carries distinct information; the em-dash clauses on provenance are slightly heavy for the payload they deliver.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters, nested _subject/_files objects, full schema coverage, annotations and an output schema, the description needs only to frame purpose, provenance and failure reporting — which it does. Minor gap: no statement of what the check does when the reaction exceeds a vendor limit (refuse vs. warn), which an agent planning next steps would want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema cannot: it explains that the enzyme value selects a catalogued product whose datasheet supplies the extension rate, while values the manual omits fall back to the Taq or Phusion/Q5 preset. It also constrains anneal_c to a value the agent already obtained from a Tm model rather than a guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Plan the cycling programme for an amplicon on a NAMED enzyme') and adds a second, distinct function ('check the reaction against that manufacturer's own published limits'). The dual plan+audit scope is stated outright, which separates it from pcr_amplify (which runs the reaction) and from melting_temperature (which only gives a Tm).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Makes the division of labour explicit: the annealing temperature 'is yours (from design_primers or pcr_amplify)', not something this tool infers, and the enzyme choice selects the datasheet used for extension/denaturation. That tells an agent the prerequisite step before calling. It stops short of naming a competing sibling it should be preferred over or any when-not condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

population_ancestryA
Read-only
Inspect

Individual ancestry coefficients, the ADMIXTURE-style picture: each sample as a mixture of K ancestral populations, fitted by sparse non-negative matrix factorisation for every K in a range, with K scored by the cross-entropy of predicting genotypes held out at random (LEA snmf, Frichot et al. 2014). Single-base records only, as LEA's vcf2geno keeps them. Validated against LEA 3.19.8 on every record and sample of 1000 Genomes phase 3 APOL1.

NameRequiredDescriptionDefault
kToNolargest number of ancestral populations to fit; every K from kFrom up is fitted, on one random stream.
vcfYesthe call set as VCF text (a .vcf, or a .vcf.gz already decompressed); every record's GT is read, ploidy 2.
seedNoR's set.seed value: it fixes the held-out genotypes and every K's random start, so a run is reproducible and citable.
alphaNoregularisation added to every cell of FᵀF in the Q step: larger values push each sample toward fewer ancestries. Advanced.
kFromNosmallest number of ancestral populations to fit.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
ploidyNo2 for diploid ALT counts 0/1/2, 1 for haploid 0/1. Advanced.
groupByNowhich column of the sample table groups the samples; empty is its first grouping column.
holdOutNohold out a share of genotypes and score each K by the cross-entropy of predicting them; the K with the lowest is the one the data support best.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
toleranceNostop when the relative change in the least-squares criterion falls below this (after 16 passes). Advanced.
iterationsNomost alternating passes per K. Advanced.
populationsNoa sample table: a header row with a `sample` column and one or more grouping columns (tab-separated, as 1000 Genomes' .panel). Samples it does not list belong to no group.
holdOutShareNoshare of genotypes held out for the cross-entropy. Only applies when holdOut is true.

Output Schema

NameRequiredDescription
runsYesone row per K: K, the masked cross-entropy (null without holding out), and the passes the fit took
bestKYesthe K with the lowest cross-entropy, or the largest fitted K when nothing was held out
ancestryYesone row per sample at the best K: sample, its group, and its share of each ancestral population
ancestralGenotypeFrequenciesYesone row per site at the best K: chrom, pos, ref, alt, and each ancestral population's frequency of each genotype (0, 1, 2 ALT copies)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and a closed world, so the safety profile is covered. The description adds genuine context beyond that: the underlying engine (LEA snmf, Frichot et al. 2014), the single-base-record input limitation, and a concrete validation claim against LEA 3.19.8 on 1000 Genomes phase 3 APOL1.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences that front-load the purpose, then add the mechanism and the input constraint. Every sentence carries weight, though the parenthetical citation and validation detail verge on scholarly rather than operational padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 14-parameter tool with an output schema and rich annotations, the description covers what it computes, the method, and the key input restriction. Return-value details are rightly delegated to the output schema, leaving only minor gaps around result shape and output routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 14 parameters in detail (kFrom/kTo, seed, alpha, holdOut, etc.). The description reinforces the K-range and cross-entropy concepts but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (fitting individual ancestry coefficients, ADMIXTURE-style, via LEA sNMF over a K range) and is clearly distinguishable from siblings like population_fst, population_site_stats, and genotype_pca. An agent can identify exactly what output it produces 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a hard usage constraint ('single-base records only, as LEA's vcf2geno keeps them') that tells the agent when the tool is inapplicable, and frames the method as the ADMIXTURE-style picture. It does not, however, explicitly name an alternative or contrast against a sibling for cases where the constraint fails, so it falls short of full 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.

population_fstA
Read-only
Inspect

Differentiation between populations of a call set: Weir and Cockerham's θ over two or more populations, or Hudson's or Patterson's Fst between pairs, per site and averaged with a block-jackknife standard error (scikit-allel). Every pair when more than two populations are compared. Validated on every site of 1000 Genomes phase 3 APOL1 for the 5 super-populations and 26 populations.

NameRequiredDescriptionDefault
vcfYesthe call set as VCF text (a .vcf, or a .vcf.gz already decompressed); every record's GT is read, ploidy 2.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
compareNothe populations to compare, comma-separated; empty is every group of the column.
groupByNowhich column of the sample table groups the samples; empty is its first grouping column.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
estimatorNoweirCockerham: θ from the variance components over every compared population at once. hudson: 1 − within / between pairwise differences (Bhatia 2013). patterson: F2-based, biallelic sites only. Values: weirCockerham (Weir–Cockerham θ), hudson (Hudson Fst), patterson (Patterson Fst).hudson
blockLengthNosites per jackknife block for the average's standard error; a trailing partial block is dropped, as scikit-allel does.
populationsYesa sample table: a header row with a `sample` column and one or more grouping columns (tab-separated, as 1000 Genomes' .panel). Samples it does not list belong to no group.

Output Schema

NameRequiredDescription
sitesYesper site: pos, and per comparison the site's Fst (numerator / denominator), null where undefined
matrixYespairwise average Fst between every compared population (Hudson and Patterson)
averageYesper comparison: the populations, Fst over all sites, its jackknife standard error, blocks

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnly, non-destructive, closed-world). Beyond that, the description discloses genuinely non-obvious behavior: results are produced per site AND averaged with a block-jackknife standard error, all pairs are enumerated when more than two populations are given, and it states the tool was validated on 1000 Genomes phase 3 APOL1. That added context exceeds what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first clause, with method and scope details following in order of relevance. It is dense and somewhat run-on, and the trailing validation sentence is ancillary, but overall it is appropriately sized with little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies estimator behavior and scope adequately for correct invocation, though it omits practical prerequisites (e.g. what sample-table columns are expected, genotype ploidy handling) that the schema only partially conveys.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents vcf, compare, groupBy, populations, estimator, and blockLength in detail. The description reinforces that every pair is compared when >2 populations are supplied, but adds little parameter-level syntax or format meaning beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific analytic operation ('Differentiation between populations of a call set') plus the concrete statistics computed (Weir-Cockerham θ, Hudson's/Patterson's Fst). An agent can tell this is a population-genetics Fst tool, not a generic stats or ancestry tool. It does not explicitly differentiate itself from close siblings such as population_site_stats, population_ancestry, or genotype_pca.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it notes θ applies 'over two or more populations' and Hudson/Patterson work 'between pairs', which hints at estimator selection, but there is no explicit when-to-use/when-not guidance, no prerequisites (e.g. genotype-only VCF, ploidy 2), and no named alternatives. An agent must infer context from the schema's minimum requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

population_site_statsA
Read-only
Inspect

Per-site and per-sample genotype statistics of a call set, for all samples or one population: allele counts and frequencies, called and missing calls, heterozygous and homozygous counts, observed and expected heterozygosity and the inbreeding coefficient F (scikit-allel), and the exact Hardy–Weinberg test with its excess-heterozygosity tail (bcftools +fill-tags). Validated on every site and sample of 1000 Genomes phase 3 APOL1 in 32 groups.

NameRequiredDescriptionDefault
vcfYesthe call set as VCF text (a .vcf, or a .vcf.gz already decompressed); every record's GT is read, ploidy 2.
groupNocompute over this group's samples only; empty is every sample.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
groupByNowhich column of the sample table groups the samples; empty is its first grouping column.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
populationsNoa sample table: a header row with a `sample` column and one or more grouping columns (tab-separated, as 1000 Genomes' .panel). Samples it does not list belong to no group.

Output Schema

NameRequiredDescription
sitesYesone row per record: chrom, pos, ref, alts, allele counts and frequencies, AN, called, missing, het, homRef, homAlt, ho, he, f, hwe and excHet per ALT
samplesYesone row per sample: its group, called, missing, het, homAlt and the missing and het rates
summaryYessites, samples, segregating, biallelic and multiallelic sites, mean Ho and He, and the sites with the smallest HWE p-values

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description goes beyond them by disclosing the underlying implementations (scikit-allel for the statistics, bcftools +fill-tags for the HWE test), the ploidy-2 assumption, and provenance via validation on 1000 Genomes phase 3 APOL1 across 32 groups. It stops short of stating performance/scale characteristics or output shape details, so it is useful added context rather than a complete behavioral profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the full statistic inventory are front-loaded in one dense sentence, with a short second sentence for validation provenance. Every clause carries content, though the enumeration is long enough that key constraints (ploidy 2, group scoping) are buried mid-sentence rather than signposted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still covers what is computed, the ploidy-2 expectation, and the all-samples-vs-one-group behavior. For a 6-parameter tool with nested objects it is nearly adequate; the missing piece is any guidance on choosing among the other population-genetics siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description echoes the group semantics ('for all samples or one population') but adds no syntax or format detail beyond the schema, which already explains vcf, group, groupBy, and populations; no parameter meaning is enriched.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: per-site and per-sample genotype statistics computed from a call set, and enumerates the exact statistics produced (allele counts/frequencies, call rates, het/hom counts, Ho/He, F, HWE with excess-het tail). It never names or distinguishes itself from adjacent population tools such as population_fst, population_ancestry, linkage_disequilibrium, or variant_call_summary, so the sibling differentiation that would earn a 5 is absent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: you supply a VCF call set and optionally restrict to one group's samples or supply a populations sample table. There is no explicit statement of when to reach for this tool rather than population_fst/ancestry/LD, nor any 'when not to use' or prerequisite guidance, and the scoping sentence 'for all samples or one population' is the only routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

primer_checkA
Read-only
Inspect

Where a primer anneals on the open plasmid: 3'-anchored sites with identity % and the ✓/⚠/~/✗ verdict, graded at a bar you can move and that the answer states. The scan is 3'-anchored, so every site it reports matches the oligo's 3' seed exactly and 'no sites' means no seed match rather than a low score.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
primerYesprimer sequence 5'→3'.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
thresholdsNothe identity boundaries the ✓/⚠/~/✗ verdict is cut at. Left unset, the run uses the bar your Primer Library is set to, and with no panel state the upstream SpliceCraft default — either way the bar it used comes back in `thresholds`, because a verdict whose cutoff is not stated cannot be checked. Move it to say what you are asking: screening a pool tolerates a lower `strong` than checking a clone does. Advanced.

Output Schema

NameRequiredDescription
sitesYesannealing sites with identity %, mismatches, strand, the 3'-anchored footprint, and each one's tier and what that tier MEANS — read the tier rather than re-deriving it from the percentage, because the bar is a parameter
bestTierYesthe best site's tier: exact · strong · weak · marginal · none, or unknown when nothing was graded
siteCountYeshow many sites the seed found at all. Branch on this rather than on the length of `sites`: 0 is a real result and means the oligo's 3' end matches nowhere, not that it binds weakly
thresholdsYesthe four boundaries every verdict above was made against, and whether they came from your panel or from the upstream default — the same shape the `thresholds` parameter takes, so a run can be repeated at the bar it was graded at
bindingCountYeshow many sites are at or above the `strong` boundary — the ones expected to bind. More than one is a different experiment from one: a primer with two real sites gives two products, so a single clean band is not what this predicts
bestIdentityPctYesidentity of the best site, or 0 when nothing was found — a measurement, never a verdict

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, non-destructive, closed-world behavior, and the description adds a genuinely non-obvious caveat beyond them: the scan is strictly 3'-anchored, so every reported site exactly matches the 3' seed and 'no sites' means no seed match rather than a weak score. That prevents a real misreading of empty results. It stops short of saying what happens when no plasmid record is open.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose front-loaded, no filler. The second sentence is dense but every clause carries real information (anchor rule, empty-result meaning). Slightly prose-heavy for a tool definition, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations cover safety, so the description needn't explain return values — it correctly focuses on purpose and the anchoring caveat. However, for a tool that resolves a primer against 'the open plasmid', it never states what happens if no record is loaded or how record selection works, leaving a gap an agent would hit in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents primer, _subject, _files, and each threshold boundary in detail. The description echoes the movable-vs-stated-cutoff idea for thresholds ('a bar you can move and that the answer states') but adds no syntax or semantics the schema lacks, and says nothing about the primer or record parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause states a specific verb and resource: where a primer anneals on the open plasmid, returning identity % plus a ✓/⚠/~/✗ verdict. 'On the open plasmid' and '3'-anchored' scope it away from genome-wide siblings like check_primer_specificity or search_off_targets, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated — 'screening a pool tolerates a lower `strong` than checking a clone does' gives context for tuning, but there is no explicit when-to-use/when-not or named alternative among the many primer and motif-scan tools. The agent must infer that this checks binding on the currently loaded record only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propagate_uncertaintyA
Read-only
Inspect

Uncertainty through any qPCR quantity, three independent ways at once. Give it the expression you actually report - a ratio, a normalised expression, an efficiency-corrected quantity - and a mean and standard deviation for each variable in it (or the replicate observations themselves), and it returns the analytic Taylor propagation, a Monte-Carlo simulation and a permutation resampling side by side, because they disagree in informative ways: the Taylor arm is exact only for a linear expression, and a ratio is not linear. Also reports the derivative per variable and how much of the total variance each one contributes, which is the answer to "which measurement should I make more precisely?". Reproduces qpcR 1.4.2's propagate.

NameRequiredDescriptionDefault
nsimNoMonte-Carlo draws. Only applies when do_sim is true.
seedNoR's `set.seed` value, so a simulated or permuted run is reproducible and citable. Advanced.
tiesNo`raw` only: which columns are resampled together, as one whole number per column — `1,1,2` permutes the first two as a block. Blank permutes every column on its own. Use it when two columns are readings of the same tube. Only applies when do_perm is true.
inputNowhat `variables` holds. `stat` = a summary per variable; `raw` = the replicate observations. `raw` is the stronger input: it carries the measured covariance between variables and it is the only one the permutation arm can resample, because permutation resamples observed ROWS and a mean with an SD beside it has none.stat
npermNopermutations. Only applies when do_perm is true.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
do_simNorun the Monte-Carlo arm — draw from the joint normal and push every draw through the expression. Correct for any nonlinearity, at the cost of being a sample.
do_permNo`raw` only: run the permutation arm, which resamples the observed rows and so assumes no distribution at all. It also returns p-values for the three hypotheses upstream tests. Only applies when input is raw.
use_covNo`raw` only: propagate the measured covariance between the variables, not just their variances. Two Ct values read off the same plate are not independent, and treating them as independent understates the error of their ratio. Only applies when input is raw.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
dist_simNothe distribution drawn from: `norm`, or `tnorm` truncated at zero — the one to use when a variable is a concentration or a fluorescence and a negative draw is not a possible measurement. Only applies when do_sim is true.norm
variablesYesthe numbers. In `stat` mode: a header row `variable, mean, sd` and one row per variable. In `raw` mode: a header row of variable names and one row per replicate, blank cells left blank (they are dropped pairwise, never read as zero). Tab- or comma-separated.
conf_levelNothe level the reported bounds are read at.
expressionYesthe quantity whose uncertainty is wanted, in R's syntax over the variable names below: `x/y`, `2^-(a - b)`, `(Etar^-Cttar)/(Eref^-Ctref)`. Every name in it must appear in `variables`.
second_orderNoinclude the second-order Taylor terms. On is upstream's default and is what makes the analytic arm usable on a ratio; off gives the classic first-order propagation of error.

Output Schema

NameRequiredDescription
gradientYesthe printed partial derivative per variable, and its value at the means
permutedYesthe permutation arm, same fields. Null in `stat` mode, which has no rows to resample
confLowerYeslower analytic bound at `conf_level`
confUpperYesupper analytic bound
simulatedYesthe Monte-Carlo arm: mean, sd, median, mad and its own interval. Every field null when it was not run — a nonlinear expression whose two arms disagree is the finding, not a display detail
variablesYesthe variable names the run used, in expression order — every other array here is in this order
permPValuesYespermutation p-values for the three hypotheses upstream tests, in `perm > init` / `perm == init` / `perm < init` order
propagatedSdYesthe analytic (Taylor) standard error — the number to report when the expression is close to linear
contributionsYeshow much of the propagated variance each variable contributes, in %, first-order — which measurement to make more precisely
firstOrderMeanYesthe expression evaluated at the input means, before the second-order correction
propagatedMeanYesthe expression evaluated at the input means, with the second-order correction when it is on
secondOrderMeanYesthe mean with the second-order Taylor correction applied, whether or not the reported mean uses it

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description goes well beyond them: it discloses that three arms run side by side, why they disagree (Taylor is exact only for a linear expression, a ratio is not linear), and what extra output arrives (per-variable derivatives, variance shares). That is real behavioural context rather than restated hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core capability and the payoff question ('which measurement should I make more precisely?'), with no filler sentences. It is dense and runs long, and the mention of qpcR provenance, while useful, could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter tool with an output schema, full schema coverage and safety annotations, the description covers what is needed: the method, the three arms, and the meaning of the result. Nothing an agent needs in order 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 15 parameters in depth. The description adds conceptual framing of the inputs (a mean and SD per variable, or the replicate observations) but no syntax or format detail beyond what the schema supplies. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (propagate uncertainty through a qPCR quantity) and immediately enumerates the three distinct computational arms it runs. An agent can tell this apart from neighbours like bootstrap_cq, relative_expression or quantify_dpcr 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when the tool applies, including the reporting framing ('the expression you actually report') and the choice between summary stats and replicate observations. It never names an alternative tool or states when not to use it, so routing is contextual rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_digestA
Read-only
Inspect

In-silico proteolytic digest of a protein (ExPASy PeptideCutter / PeptideMass): peptides with coordinates, average and monoisotopic masses, m/z per charge state, and the MS mass-window filter. 49 proteases and chemicals — or an enzyme of your own written in RPG rule grammar — one or several at a time; a multi-enzyme digest runs concurrently (all at once, products re-digested until nothing changes) or sequentially (one result per enzyme).

NameRequiredDescriptionDefault
modeNomulti-enzyme only. 'concurrent' = all at once, re-digesting products until nothing changes (can cut where no single enzyme cuts the intact chain); 'sequential' = one result per enzyme, each on the intact protein.concurrent
semiNoalso emit semi-enzymatic peptides (one ragged terminus).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNoprotease or chemical (single-enzyme digest), or 'custom' to use `customCleave`. Values: arg-c (Arg-C proteinase), asp-n (Asp-N endopeptidase), asp-n-sg (Asp-N, sequencing grade (D and C)), bnps-skatole (BNPS-Skatole), bromelain (Bromelain), caspase-1 (Caspase 1), caspase-10 (Caspase 10), caspase-2 (Caspase 2), caspase-3 (Caspase 3), caspase-4 (Caspase 4), caspase-5 (Caspase 5), caspase-6 (Caspase 6), caspase-7 (Caspase 7), caspase-8 (Caspase 8), caspase-9 (Caspase 9), chymotrypsin-high (Chymotrypsin (high specificity)), chymotrypsin-low (Chymotrypsin (low specificity)), clostripain (Clostripain (Arg-C)), cnbr (CNBr), elastase (Elastase), enterokinase (Enterokinase), factor-xa (Factor Xa), ficin (Ficin), formic-acid (Formic acid), glu-c (Glu-C (D and E)), glutamyl-endopeptidase (Glutamyl endopeptidase), granzyme-b (Granzyme B), hydroxylamine (Hydroxylamine), iodosobenzoic-acid (Iodosobenzoic acid), lysc (Lys-C), lysn (Lys-N), lysarginase (LysargiNase), neutrophil-elastase (Neutrophil elastase), ntcb (NTCB (2-nitro-5-thiocyanobenzoic acid)), papain (Papain), pepsin-ph2.0 (Pepsin (pH > 2)), pepsin-ph1.3 (Pepsin (pH 1.3)), proalanase (ProAlanase), proline-endopeptidase (Proline endopeptidase), proteinase-k (Proteinase K), staph-peptidase-i (Staphylococcal peptidase I), tev (TEV protease (Tobacco Etch Virus)), thermolysin (Thermolysin), thrombin (Thrombin), thrombin-sg (Thrombin (sequencing grade)), trypsin (Trypsin), trypsin-low (Trypsin (low specificity)), trypsin-simple (Trypsin (simple K/R)), alp (α-lytic protease (aLP)), custom (Custom cleavage rule).trypsin
chargesNocharge states to report m/z for, e.g. [1,2,3] — [M+zH]z+ from the monoisotopic mass.
enzymesNotwo or more proteases for a multi-enzyme digest; overrides `enzyme`. Order matters in concurrent mode. 'custom' takes its place in the order like any other.
massMaxNokeep only peptides at or below this monoisotopic mass [Da]; omit for no upper bound.
massMinNokeep only peptides at or above this monoisotopic mass [Da]; omit for no lower bound.
proteinYesthe protein sequence (unambiguous one-letter codes); wire it from translate_sequence.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cysteineNocysteine alkylation applied before the digest, as ExPASy PeptideMass offers it. Mass deltas are Unimod's.none
maxLengthNodrop peptides longer than this (residues).
minLengthNodrop peptides shorter than this (residues).
customRegexNothe 'custom' enzyme as a regular expression instead of RPG grammar (pyteomics' `rule=`): it matches at P1 and the cut falls after the match, e.g. '[KR]' cleaves after K or R. Single-enzyme only, and mutually exclusive with `customCleave`. Advanced.
customCleaveNocleaving rules for the 'custom' enzyme, in RPG grammar: the comma is the cut, so '(,A)' cleaves before A and '(K or R,)' after K or R. Empty parentheses mean any residue.
metOxidationNomethionine oxidation. 'all' oxidises every Met (masses move, peptide list unchanged); 'both' lists each Met peptide TWICE, unmodified and oxidised, as PeptideMass does.off
keilExceptionsNoapply Keil's exception rules (sites trypsin does NOT cut despite matching). Only defined for trypsin. PeptideCutter and Bioconductor cleaver apply these by default, which is why this does too; pyteomics does not, so turn it off to cross-check against pyteomics.
missedCleavagesNosingle enzyme: allow up to this many internal sites per peptide (pyteomics). Multi-enzyme: append runs of up to this many merged adjacent peptides (RPG).
customExceptionsNoexceptions for the 'custom' enzyme; each must repeat the rule it blocks, e.g. '(K or R,)(P)' = not when P follows.

Output Schema

NameRequiredDescription
countYespeptides returned after any mass filter
sitesYescleavage-site positions (0-based residue index the next peptide starts at)
resultsYesmulti-enzyme only: one entry per digestion (per enzyme in sequential mode, one for the whole set in concurrent), each with its own peptides, sites and coverage
coverageYesfraction of the protein covered by the peptides returned
peptidesYespeptides with start/end, sequence, missed cleavages, masses and m/z (all results pooled in multi-enzyme mode)
totalPeptidesYespeptides the digest produced BEFORE the mass filter

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: what the digest returns (peptides with coordinates and masses), and the semantics of concurrent (re-digest until stable, can cut where no single enzyme would) versus sequential (one result per enzyme) — the latter only partially mirrored in the schema. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and outputs before the enzyme-count and mode details. Dense but every phrase carries information; slightly packed with parenthetical tool names that stretch the opening clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out (and the description still sketches them), and annotations cover the safety profile. For a 19-parameter tool with nested objects and 100% schema coverage, the description supplies enough orientation about scope, outputs, and enzyme/mode behavior; only explicit sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 19 parameters thoroughly. The description adds gloss on the 49 proteases, custom RPG rule grammar, and the mass-window filter, but no syntax or format detail beyond what the schema provides; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('in-silico proteolytic digest of a protein') plus the concrete outputs (peptides with coordinates, average/monoisotopic masses, m/z per charge state, mass-window filter) and anchors to ExPASy PeptideCutter/PeptideMass. An agent can distinguish this from siblings like peptide_mass, digest_fragments or enzyme_cut_counts 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how the multi-enzyme modes behave (concurrent vs sequential) which implicitly guides parameter choice, but never says when to reach for this tool versus peptide_mass, digest_fragments or enzyme_cut_counts. Usage is inferable from the stated purpose, not explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_disorderA
Read-only
Inspect

Intrinsic disorder along a protein by FoldIndex (Prilusky 2005): I_F = 2.785·⟨H⟩ − |⟨R⟩| − 1.151 over a sliding window, where ⟨H⟩ is mean normalized Kyte-Doolittle hydropathy and ⟨R⟩ the mean net charge per residue. Negative means predicted unfolded. Reports the whole-protein score, the per-window series, the runs below zero, and the Uversky charge-hydropathy point with the boundary it was judged against.

NameRequiredDescriptionDefault
pHNopH for the Henderson-Hasselbalch model, ignored by 'net' (default 7.0, the pH the paper's ⟨R⟩ is defined at). Only applies when chargeModel is henderson-hasselbalch.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
pKaSetNonamed pKa set for the Henderson-Hasselbalch model (default IPC_protein, which is idpr's). Values: EMBOSS (EMBOSS (Rice 2000)), DTASelect (DTASelect (Tabb 2002)), Solomons (Solomons (Solomons 1992)), Sillero (Sillero (Sillero 1989)), Rodwell (Rodwell (Rodwell 1982)), Lehninger (Lehninger (Nelson 2017)), Toseland (Toseland (Toseland 2006)), Thurlkill (Thurlkill (Thurlkill 2006)), Nozaki (Nozaki (Nozaki 1971)), Dawson (Dawson (Dawson 1989)), Bjellqvist (Bjellqvist (Bjellqvist 1994)), ProMoST (ProMoST (Halligan 2004)), IPC_protein (IPC_protein (Kozlowski 2016)), IPC_peptide (IPC_peptide (Kozlowski 2016)), Vollhardt (Vollhardt (Vollhardt 2014)).IPC_protein
windowNosliding window in residues, odd so a window has a centre residue to report at (default 51, the size the FoldIndex paper uses). Short windows expose single loops; long ones report whole domains.
proteinYesthe protein sequence (unambiguous one-letter codes); wire it from translate_sequence.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
chargeModelNo'net' counts whole charges K+R−D−E, which is what the paper does; 'henderson-hasselbalch' uses fractional charges at `pH`. They answer different questions and only the first is settled by the paper.net
countHistidineNocount histidine as positive in the 'net' model. False by default: the paper says charged residues at pH 7.0, and His (pKa ~6) is ~9% protonated there, so Uversky's set is K,R vs D,E — exposed because some FoldIndex descendants do count it.

Output Schema

NameRequiredDescription
plotYesthe FoldIndex profile as a plot; below zero is predicted disordered
scoresYesjust the I_F value per window, parallel to `positions`
windowYesthe window actually used
overallYeswhole-protein FoldIndex from the global means — the number the 2005 paper's abstract reports. Below zero = predicted unfolded
windowsYesevery window: { position, centerResidue, hydropathy, charge, score } — the series a plot draws
boundaryYesthe Uversky 2000 boundary |⟨R⟩| = 2.785·⟨H⟩ − 1.151 evaluated at this protein's ⟨H⟩ — what `meanNetCharge` is above or below
segmentsYesruns of consecutive negative windows as 1-based inclusive residue spans, with each run's mean and minimum I_F
unfoldedYeswhether the whole-protein point sits above that boundary, i.e. predicted natively unfolded
positionsYes1-based centre residue of each window, parallel to `scores`
pKaSetNameYesthe pKa set actually used, or '' for the 'net' model which needs none
chargeModelYesthe charge model actually used
windowCountYeshow many windows were scored — the series length, so a fraction can be read back
meanNetChargeYes|⟨R⟩| over the whole chain — the y of the Uversky point
meanHydropathyYes⟨H⟩ over the whole chain — the x of the Uversky charge-hydropathy point
disorderedWindowsYeshow many windows score below zero
disorderedFractionYesthat count as a fraction of all windows

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/openWorldHint/destructiveHint, so the safety profile is covered. The description adds real behavioral context beyond that: the exact scoring model, the meaning of the score sign, and what is reported (whole-protein score, per-window series, sub-zero runs, Uversky CH point). It stops short of noting cost, limits, or edge cases (e.g., short sequences).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the method name and formula, then the sign interpretation, then the reported outputs. Two dense sentences with little waste; the formula is arguably verbose but is the tool's core definition and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with nested objects, an output schema, and full schema coverage, the description supplies the method, its interpretation, and its outputs, while annotations carry the safety profile. An agent has everything needed to select and call it correctly; only sibling routing is missing, which is scored under usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (pH, pKaSet, window, protein, chargeModel, countHistidine, _subject, _files) is already documented in detail. The description only obliquely touches parameters via 'sliding window' and 'mean net charge per residue', adding essentially nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: predicting intrinsic disorder along a protein via the named FoldIndex method (Prilusky 2005), including the exact formula and the sign interpretation ('negative means predicted unfolded'). This is far more specific than a generic 'analyze protein'. However, it never names or contrasts with the obvious sibling protein_disorder_metapredict, so the differentiation is implicit (method-based) rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers it is for disorder prediction and that negative scores indicate unfolded regions. There is no statement of when to prefer this over protein_disorder_metapredict, protein_profile, or protein_membrane_profile, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_disorder_metapredictA
Read-only
Inspect

Per-residue intrinsic disorder by metapredict (Emenecker, Griffith & Holehouse, Biophys J 2021; V2/V3 the lab's successors), a bidirectional LSTM trained to reproduce a consensus of disorder predictors, run locally. Reports a 0–1 score per residue, the IDRs and folded domains its domain caller draws from the smoothed profile, and the percentage of residues at or above the network's threshold. A different question from protein_disorder's FoldIndex, which reads composition alone.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
convertNoread B as N, U as C, X as G and Z as Q, as metapredict's FASTA readers do; off refuses them. Default true. Advanced.
proteinYesthe protein sequence; wire it from translate_sequence.
versionNowhich trained network: V3 (the package default), V2, or V1 (the published 2021 network). Values: V3 (V3 (default)), V2 (V2), V1 (V1 (published, legacy)).V3
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
thresholdNosmoothed score above which a residue can seed an IDR, and per-residue score at or above which it counts as disordered. Omit for the network's own: V1 0.42, V2 and V3 0.5.
gapClosureNothe longest run of sub-threshold residues closed when flanked by disordered runs of the same length. Default 10. Advanced.
minimumIdrSizeNothe shortest IDR the domain caller reports, in residues; also sets the smoothing window (twice this, made odd). Default 12. Advanced.
minimumFoldedDomainNogaps between IDRs shorter than this are re-tested at 0.75× the threshold, so short ordered stretches inside an IDR are absorbed. Default 50. Advanced.

Output Schema

NameRequiredDescription
idrsYesintrinsically disordered regions as 1-based inclusive spans with their length and mean score
scoresYesthe per-residue disorder score, 0–1, residue 1 first
versionYesthe network actually used
convertedYeshow many B/U/X/Z residues were read as N/C/G/Q
thresholdYesthe threshold actually used
idrResiduesYeshow many residues the IDRs cover
foldedDomainsYesthe complementary folded domains, same shape
percentDisorderedYespercentage of residues scoring at or above the threshold, to 3 dp
disorderedResiduesYeshow many residues score at or above the threshold

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the readOnly/openWorld annotations: describes the model (bidirectional LSTM trained to a consensus, run locally), what it emits (0–1 per-residue scores, IDRs, folded domains, percentage at threshold), and provenance. This is far more than the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool computes, then output description, then sibling contrast. Dense but every sentence adds value; the citation is a minor weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be re-explained, and annotations cover safety. The description supplies model context and sibling differentiation; minor gap is no explicit version-selection guidance, though the schema covers it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter is fully documented in the schema, including defaults and advanced flags. The description only implicitly touches threshold and smoothing; baseline 3 is appropriate since the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (per-residue intrinsic disorder by metapredict) and names the sibling it must not be confused with (protein_disorder's FoldIndex). An agent can distinguish the two 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly contrasts itself with protein_disorder, noting metapredict answers 'a different question' than composition-based FoldIndex. It signals when to prefer this model but does not spell out an explicit routing rule or when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_membrane_profileA
Read-only
Inspect

Eisenberg hydrophobic-moment plot along a protein: per-window mean hydrophobicity and moment, each classified Globular / Transmembrane / Surface-seeking, plus those windows collapsed into residue spans. A hydrophobicity-based prediction, NOT a trained topology model.

NameRequiredDescriptionDefault
angleNorotational angle per residue in degrees: 100 for an alpha-helix (default), 160 for a beta-sheet.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
windowNosliding window in residues (default 11).
proteinYesthe protein sequence (unambiguous one-letter codes); wire it from translate_sequence.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
minWindowsNoshortest run of same-class windows reported as a segment (default 2; a one-window run is usually noise).

Output Schema

NameRequiredDescription
plotYesthe Eisenberg profile as a plot: moment and mean hydrophobicity per window
momentYeshydrophobic moment uH per window
positionYesper-window class: G globular, T transmembrane, S surface-seeking
segmentsYesruns of one class as 1-based inclusive residue spans, with their mean/peak moment
transmembraneYeshow many segments are classified transmembrane
hydrophobicityYesmean Eisenberg hydrophobicity H per window

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds meaningful behavior beyond them: the output is a heuristic hydrophobicity-based prediction rather than a trained topology model, which tells the agent how much to trust the classification. It does not, however, discuss limitations like window/angle sensitivity or overlap handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded with the highest-value information: what is computed and what is returned, followed by the reliability caveat. No filler or restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and annotations carry the safety profile. What remains for the description — method, output granularity (per-window + spans), and the heuristic caveat — is all present, so an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so window, angle, minWindows, protein, _subject and _files are all documented in the schema itself. The description adds only light framing ('per-window', 'windows collapsed into residue spans') that contextualizes window/minWindows without adding syntax or limits. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific method (Eisenberg hydrophobic-moment plot) and a concrete output shape: per-window mean hydrophobicity and moment, class labels, and collapsed residue spans. It also implicitly distinguishes itself from trained topology predictors ('NOT a trained topology model'), though it never names the sibling (e.g. protein_topology) directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The disclaimer 'NOT a trained topology model' implies when to prefer a trained predictor instead, but there is no explicit when-to-use/when-not statement and no named alternative. Usage is left for the agent to infer from the caveat.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_profileA
Read-only
Inspect

Windowed physicochemical profile along a protein (ExPASy ProtScale). Pass scaleId for any of the 57 scales ProtScale publishes plus the 14 Biopython tables it does not, with optional 0-1 normalisation; or pass kind for the five ProtParam profiles (hydropathy over the 28 GRAVY scales, Vihinen flexibility, Hopp & Woods hydrophilicity, Emini surface accessibility, Janin interior-to-surface transfer). Returns one value per window with the residue it centres on.

NameRequiredDescriptionDefault
edgeNoProtScale relative weight of the window's edge residues, 0-1 (default 1 = unweighted).
kindNowhich profile to compute. Ignore this and pass `scaleId` to reach the full ProtScale catalogue.hydropathy
scaleNohydropathy scale. Values: KyteDoolitle (Kyte & Doolittle (1982)), Aboderin (Aboderin (Int J Biochem 2:537)), AbrahamLeo (Abraham & Leo (1987)), Argos (Argos (Eur J Biochem 128:565)), BlackMould (Black & Mould (1991)), BullBreese (Bull & Breese (1974)), Casari (Casari & Sippl, hydrophobic potential (JMB 224:725)), Cid (Cid (Protein Eng 5:373)), Cowan3.4 (Cowan at pH 3.4 (1990)), Cowan7.5 (Cowan at pH 7.5 (1990)), Eisenberg (Eisenberg, normalized consensus (1984)), Engelman (Engelman, transfer free energy (Annu Rev Biophys 15:321)), Fasman (Fasman (1989)), Fauchere (Fauchere (1983)), GoldSack (Goldsack & Chalifoux, free energy of mixing (J Theor Biol 39:645)), Guy (Guy, transfer free energy kcal/mol (1985)), Jones (Jones (J Theor Biol 50:167)), Juretic (Juretic (Theor Comput Chem 5:405)), Kidera (Kidera factors (J Protein Chem 4:23)), Miyazawa (Miyazawa, contact energy from 3D structures (1985)), Parker (Parker, HYDROPHILICITY from HPLC retention (1986)), Ponnuswamy (Ponnuswamy, folded-protein character (Prog Biophys Mol Biol 59:57)), Rose (Rose (1985)), Roseman (Roseman (1988)), Sweet (Sweet, optimized matching OMH (1983)), Tanford (Tanford (1962)), Wilson (Wilson, hydrophobic constants from HPLC retention (1981)), Zimmerman (Zimmerman (J Theor Biol 21:170)). Only applies when kind is hydropathy.KyteDoolitle
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
windowNoProtScale window in residues, odd (default 9). IGNORED for 'flexibility', whose Vihinen parameters are only defined at 9. Only applies when kind is hydropathy or hydrophilicity or accessibility or interior.
proteinYesthe protein sequence (unambiguous one-letter codes); wire it from translate_sequence.
scaleIdNoany of the 57 ExPASy ProtScale scales, or the 14 Biopython tables ProtScale does not publish. Pass this INSTEAD of `kind` and `scale`, never alongside them: sending `scaleId` together with `kind` is refused by name rather than one silently winning. The panel opens on `scaleId: hydropath-doolittle`, which computes the same curve as the `kind`/`scale` defaults. Values: molecularweight (Molecular weight), numbercodons (Number of codon(s)), bulkiness (Bulkiness), polarityzimmerman (Polarity / Zimmerman), polaritygrantham (Polarity / Grantham), refractivity (Refractivity), recognitionfactors (Recognition factors), hphob-eisenberg (Hphob. / Eisenberg et al.), hphob-sweet (Hphob. OMH / Sweet et al.), hphob-woods (Hphob. / Hopp & Woods), hydropath-doolittle (Hydropath. / Kyte & Doolittle), hphob-manavalan (Hphob. / Manavalan et al.), hphob-leo (Hphob. / Abraham & Leo), hphob-black (Hphob. / Black), hphob-breese (Hphob. / Bull & Breese), hphob-fauchere (Hphob. / Fauchere et al.), hphob-guy (Hphob. / Guy), hphob-janin (Hphob. / Janin), hphob-miyazawa (Hphob. / Miyazawa et al.), hphob-argos (Hphob. / Rao & Argos), hphob-roseman (Hphob. / Roseman), hphob-tanford (Hphob. / Tanford), hphob-wolfenden (Hphob. / Wolfenden et al.), hphob-welling (Hphob. / Welling & al), hphob-wilson (Hphob. HPLC / Wilson & al), hphob-parker (Hphob. HPLC / Parker & al), hphob-ph3-4 (Hphob. HPLC pH3.4 / Cowan), hphob-ph7-5 (Hphob. HPLC pH7.5 / Cowan), hphob-mobility (Hphob. / Rf mobility), hplchfba (HPLC / HFBA retention), hplctfa (HPLC / TFA retention), transmembranetendency (Transmembrane tendency), hplc2-1 (HPLC / retention pH 2.1), hplc7-4 (HPLC / retention pH 7.4), buriedresidues (% buried residues), accessibleresidues (% accessible residues), hphob-chothia (Hphob. / Chothia), hphob-rose (Hphob. / Rose & al), ratioside (Ratio hetero end/side), averageburied (Average area buried), averageflexibility (Average flexibility), alpha-helixfasman (alpha-helix / Chou & Fasman), beta-sheetfasman (beta-sheet / Chou & Fasman), beta-turnfasman (beta-turn / Chou & Fasman), alpha-helixroux (alpha-helix / Deleage & Roux), beta-sheetroux (beta-sheet / Deleage & Roux), beta-turnroux (beta-turn / Deleage & Roux), coilroux (Coil / Deleage & Roux), alpha-helixlevitt (alpha-helix / Levitt), beta-sheetlevitt (beta-sheet / Levitt), beta-turnlevitt (beta-turn / Levitt), totalbeta-strand (Total beta-strand), antiparallelbeta-strand (Antiparallel beta-strand), parallelbeta-strand (Parallel beta-strand), a-a-composition (A.A. composition), a-a-swiss-prot (A.A. comp. in Swiss-Prot), relativemutability (Relative mutability), biopython-argos (Argos), biopython-casari (Casari & Sippl), biopython-cid (Cid et al.), biopython-engelman (Engelman (GES)), biopython-fasman (Fasman), biopython-goldsack (Gold Sack & Chalifoux), biopython-jones (Jones), biopython-juretic (Juretic et al.), biopython-kidera (Kidera et al.), biopython-ponnuswamy (Ponnuswamy), biopython-zimmerman (Zimmerman (hydrophobicity)), biopython-flex (Flexibility (Vihinen)), biopython-surface-accessibility (Surface accessibility (Emini)), biopython-janin (Janin (Biopython rounding)).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
normalizeNoProtScale's 'normalize the scale from 0 to 1' — rescales the twenty scale values before windowing, so profiles from different scales are comparable. Requires `scaleId`.
weightVariationNoProtScale's weight model between the centre and the edge weight: 'linear' steps down evenly, 'exponential' decays steeply near the centre. Requires `scaleId`; identical at edge 1.linear

Output Schema

NameRequiredDescription
peakYesindex into `values` of the LARGEST value. Large is not a synonym for hydrophobic: on a transfer free energy or a hydrophilicity scale the largest window is the most hydrophilic one, and on a flexibility or accessibility profile it is neither. `label` names the scale; `protein_properties.gravyHydrophobicEnd` answers the direction for the 28 hydropathy tables
plotYesthe profile as a plot along the chain
labelYesthe profile's cited name, e.g. 'Hydropathy (KyteDoolitle)'
troughYesindex into `values` of the SMALLEST value — the other extreme, which is the hydrophobic one on an inverted scale
valuesYesone profile value per window
windowYeswindow actually used (flexibility forces 9)
centresYes0-based residue index each window centres on, parallel to `values`
referenceYesthe scale's primary citation, when it came from the ProtScale catalogue. Empty for the five ProtParam kinds
normalizedYeswhether the scale was rescaled to 0-1 before windowing. False for the five ProtParam kinds, which are never rescaled
peakResidueYes1-based residue the peak window centres on
troughResidueYes1-based residue the trough window centres on
weightVariationYesthe ProtScale weight model the values were computed under, 'linear' or 'exponential' ('linear' for the five ProtParam kinds)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: it explains the exclusivity failure mode ('sending `scaleId` together with `kind` is refused by name rather than one silently winning'), the normalisation/weighting behaviour, and that output is one value per window with its centre residue. It doesn't mention compute cost or limits, which keeps it short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the operation and the two routes into it, with no filler. The long enumerations of scales and scale IDs are correctly pushed into the schema rather than bloating the prose, though the second sentence is dense enough to require a second read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with enums, nested `_subject`/`_files` objects, an output schema, and full annotation coverage, the description supplies the conceptual map (two exclusive input modes, normalisation, windowing, per-window return) that lets an agent call it correctly. Nothing critical is missing, though it could be slightly more explicit about the scaleId-vs-kind decision being enforced by the server.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including the enum value lists and the per-parameter caveats (e.g. `window` ignored for flexibility, `normalize` requires `scaleId`). The description mostly restates these and adds only the framing that `kind` selects among five classic profiles, so the baseline 3 for a fully-covered schema is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource up front ('Windowed physicochemical profile along a protein') and identifies the underlying engines (ExPASy ProtScale, ProtParam profiles), so the agent knows it is computing per-window physchem curves rather than bulk protein properties. However, it never names or contrasts itself with close siblings such as protein_properties, protein_membrane_profile, or protein_disorder, leaving differentiation to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lays out two clear input paths — `scaleId` for the 57 ProtScale scales plus 14 Biopython tables, `kind` for the five ProtParam profiles — which tells the agent when each branch applies. It does not state any condition for choosing this tool over its neighbours, and the mutual-exclusivity guidance lives largely in the schema rather than the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_propertiesB
Read-only
Inspect

Molecular weight (average + monoisotopic), molecular formula, isoelectric point, instability index and amphipathicity (Boman index, Eisenberg hydrophobic moment) of a protein sequence (Biopython ProtParam + peptides + pyteomics).

NameRequiredDescriptionDefault
pHNopH the net charge is reported at (default 7.0).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
proteinYesthe protein sequence (unambiguous one-letter codes); wire it from translate_sequence.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
gravyScaleNohydropathy scale GRAVY is averaged over (all 28 ProtParam/ProtScale scales; default Kyte & Doolittle). Values: KyteDoolitle (Kyte & Doolittle (1982)), Aboderin (Aboderin (Int J Biochem 2:537)), AbrahamLeo (Abraham & Leo (1987)), Argos (Argos (Eur J Biochem 128:565)), BlackMould (Black & Mould (1991)), BullBreese (Bull & Breese (1974)), Casari (Casari & Sippl, hydrophobic potential (JMB 224:725)), Cid (Cid (Protein Eng 5:373)), Cowan3.4 (Cowan at pH 3.4 (1990)), Cowan7.5 (Cowan at pH 7.5 (1990)), Eisenberg (Eisenberg, normalized consensus (1984)), Engelman (Engelman, transfer free energy (Annu Rev Biophys 15:321)), Fasman (Fasman (1989)), Fauchere (Fauchere (1983)), GoldSack (Goldsack & Chalifoux, free energy of mixing (J Theor Biol 39:645)), Guy (Guy, transfer free energy kcal/mol (1985)), Jones (Jones (J Theor Biol 50:167)), Juretic (Juretic (Theor Comput Chem 5:405)), Kidera (Kidera factors (J Protein Chem 4:23)), Miyazawa (Miyazawa, contact energy from 3D structures (1985)), Parker (Parker, HYDROPHILICITY from HPLC retention (1986)), Ponnuswamy (Ponnuswamy, folded-protein character (Prog Biophys Mol Biol 59:57)), Rose (Rose (1985)), Roseman (Roseman (1988)), Sweet (Sweet, optimized matching OMH (1983)), Tanford (Tanford (1962)), Wilson (Wilson, hydrophobic constants from HPLC retention (1981)), Zimmerman (Zimmerman (J Theor Biol 21:170)).KyteDoolitle
momentWindowNosliding window for the hydrophobic moment, in residues (default 11; clamped to the sequence length).
cystineConventionNohow the oxidised e280 counts cysteines: 'cystine' = 125 per disulfide (ProtParam, default) or 'perCysteine' = 62.5 per residue (SnapGene). They differ only on an ODD cysteine count.cystine

Output Schema

NameRequiredDescription
mwYesmolecular weight [Da] — a FLOOR when `nonStandard` is non-empty, because ProtParam has no mass for those letters and still counts them in the length
pIYesisoelectric point
a280YesA280 of a 1 g/L solution (cystines form) — divide a spectrophotometer reading by this
turnYesfraction of residues favouring a turn
atomsYestotal number of atoms in the molecule, or null when a residue has no formula
bomanYesBoman potential protein-interaction index [kcal/mol] (>2.48 = protein-binding)
gravyYesgrand average of hydropathicity over `gravyScale`, or null when a residue has no value on it
helixYesfraction of residues favouring an alpha-helix
sheetYesfraction of residues favouring a beta-sheet
chargeYesnet charge at `pH`
lengthYesresidues analysed, including any the mass tables have no row for
stableYesProtParam's own reading of the index: at or below 40. Null exactly when `instability` is — there is no verdict without a value
formulaYesmolecular formula, ProtParam style (e.g. C1755H2634N466O557S5); empty when a residue has no formula
elementsYesatom counts per element (C, H, N, O, S) behind the formula, or null when a residue has no formula
aliphaticYesaliphatic index (Ikai 1980) — higher suggests greater thermostability
nTerminalYesthe N-terminal residue the N-end rule half-lives below are read from
gravyScaleYeswhich hydropathy scale `gravy` was averaged over
aromaticityYesaromaticity (Lobry 1994): the F+W+Y frequency, as a fraction
compositionYesresidue counts, one entry per standard amino acid (ProtParam's composition table)
instabilityYesinstability index (>40 = unstable in vivo), or null when a residue the Guruprasad table has no row for makes it undefined — refused rather than computed on a spliced sequence
momentHelixYesmax Eisenberg hydrophobic moment at the α-helix periodicity (100°)
momentSheetYesmax Eisenberg hydrophobic moment at the β-sheet periodicity (160°)
nonStandardYesresidues with no mass at all (X, B, Z, gaps, *), with their positions: excluded from `mw`, `monoisotopicMw`, `formula` and `elements`, still counted in `length`. Empty on a clean chain
momentWindowYesthe window the two moments were measured over, after the clamp to the sequence length — a short peptide is not measured over 11 residues it does not have
halfLifeEcoliYesestimated in-vivo half-life, E. coli (N-end rule)
halfLifeYeastYesestimated in-vivo half-life, yeast (N-end rule)
monoisotopicMwYesmonoisotopic molecular weight [Da] — what mass spectrometry reports. Null when a residue has no mass, rather than a mass for a different molecule
scaleNonStandardYesresidues that ARE weighed but have no per-residue scale value (U, O). They are why `gravy` and `instability` can come back null on a sequence whose mass is exact
extinctionReducedYesmolar extinction coefficient at 280 nm [M-1 cm-1], all cysteines reduced
halfLifeMammalianYesestimated in-vivo half-life, mammalian reticulocytes (N-end rule); '—' when the N-terminus has no entry
compositionPercentYesthe same table as mole percent of the chain
extinctionCystinesYesmolar extinction coefficient at 280 nm [M-1 cm-1], cystines formed (per `cystineConvention`)
gravyHydrophobicEndYeswhich end of `gravyScale` is the hydrophobic one: 'higher' (Kyte & Doolittle and most others) or 'lower' (a transfer free energy or a hydrophilicity scale). Read `gravy` against this, never against zero alone
gravyZeroIsMeaningfulYeswhether `gravyScale` takes both signs. False on the eight one-sided tables (Rose, Miyazawa, Argos, …), where the sign of `gravy` is a property of the scale and says nothing about this protein

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the bar is lower. The description adds useful provenance (Biopython ProtParam + `peptides` + `pyteomics`), implying deterministic local computation, but says nothing about handling of non-standard residues, failure modes, or compute cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence, front-loaded with the enumerated outputs and ending with implementation provenance; nothing is redundant. The parenthetical tool citation is borderline but adds trust context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't describe return values, and it does cover the computed quantity set and backend. For a 7-parameter tool with a nested `_subject` input, the main remaining gap is guidance on the input record forms and the undefined e280/`cystineConvention` link.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the parameter semantics and a baseline of 3 applies. The description alludes to the outputs tied to pH (pI/net charge), gravyScale and momentWindow (amphipathicity/hydrophobic moment), but never links cystineConvention to the extinction coefficient at 280 nm it actually controls, nor explicitly ties gravyScale to GRAVY.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (a protein sequence) and enumerates the exact computed quantities (molecular weight average + monoisotopic, formula, pI, instability index, Boman index, hydrophobic moment), which lets an agent separate it from siblings like protein_digest or protein_disorder. The verb is implicit ("properties of") rather than an explicit "compute/calculate," and no sibling is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use/when-not guidance and no mention of alternatives such as peptide_mass, protein_profile, or protein_membrane_profile, even though many sibling tools overlap on protein analysis. The only usable signal is the implicit notion that this is for bulk physicochemical descriptors of a sequence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_signal_peptideA
Read-only
Inspect

Signal-peptidase cleavage sites in a protein, by von Heijne's (1986) weight matrix as implemented by EMBOSS sigcleave. Scores a 15-residue window at every position (the 13 residues before the cut plus the first two after) against either the eukaryotic or the prokaryotic training set. Predicts WHERE the cut would fall, not WHETHER the protein is secreted — a high score away from the N-terminus is a look-alike, not a secretion call.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
kingdomNowhich of von Heijne's training sets to score against: 161 aligned eukaryotic or 36 prokaryotic signal peptides. Pick the one matching the EXPRESSION HOST — the two disagree by several points on the same sequence.eukaryote
proteinYesthe protein sequence (unambiguous one-letter codes); wire it from translate_sequence.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
minWeightNoreport sites scoring strictly above this. EMBOSS's default of 3.5 finds ~95% of real signal peptides and rejects ~95% of non-signal sequences.

Output Schema

NameRequiredDescription
scoreYesthe best site's score — a sum of 15 log-odds, NOT a probability
sitesYesevery site above the threshold, best first: { cleavageAfter, score, start, end, window, maturePeptide }
matrixYeswhich training set was used, and how many peptides it was built from
scoresYesthe score at every position, thresholded or not — the series a plot draws
siteCountYeshow many sites cleared the threshold
cleavageAfterYes1-based residue the best site cuts after; the mature chain starts at the next one. 0 when nothing cleared the threshold
maturePeptideYesthe predicted mature chain, from the cleavage site to the end
signalPeptideYesresidues 1..cleavageAfter, the predicted signal peptide

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description goes beyond that by disclosing the algorithm, the exact window (13 residues before the cut plus two after), the training-set distinction, and an important interpretation caveat about false positives — real behavioral context rather than restated annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the method and window before the caveat. Every sentence carries information, though the technical density of the middle sentence is slightly heavy for a first read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not explain return values, and it adequately covers what is computed, how, and how to interpret the scores. Combined with full schema coverage and annotations, an agent has what it needs to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents kingdom (training-set selection) and minWeight (default 3.5, ~95% sensitivity/specificity). The description echoes the eukaryotic/prokaryotic choice but adds no syntax or semantics beyond what the schema fields already state, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (signal-peptidase cleavage sites in a protein) and names the exact method (von Heijne 1986 weight matrix via EMBOSS sigcleave). It explicitly scopes what the tool does NOT do — 'predicts WHERE the cut would fall, not WHETHER the protein is secreted' — which cleanly separates it from secretion/membrane siblings like protein_membrane_profile or protein_topology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use (scoring a 15-residue window against a eukaryotic or prokaryotic training set) and a strong interpretation caveat that a high score away from the N-terminus is a look-alike, not a secretion call. It stops short of naming an alternative sibling tool for secretion prediction, so no explicit alternatives are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protein_topologyA
Read-only
Inspect

Transmembrane topology of a protein by the HMM-TM 114-state hidden Markov model (JUCHMME, Bagos et al.), decoded residue by residue into inside / transmembrane-helix / outside runs. Reports the labelled path, the runs as residue spans, and the per-residue posterior. Needs the trained model, which the host loads once per session — this refuses by name when it has not been.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
proteinYesthe protein sequence (unambiguous one-letter codes); wire it from translate_sequence.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
decodingNowhich decoder: 'viterbi' the single most probable state path (default, and the fast one); 'posterior-viterbi' and 'optimal-accuracy' re-decode over the posterior; 'n-best' beams over label SEQUENCES rather than states and is a genuinely different algorithm — and much slower on a long chain.viterbi

Output Schema

NameRequiredDescription
pathYesone label per residue, in sequence order
helicesYeshow many runs are transmembrane helices — 0 means no helix was predicted, which for a cytosolic protein is the right answer and not a failure
logProbYeslog probability of the decoded path, in nats
summaryYesthe topology in words — how many helices and which side the N-terminus is on, or that none was predicted
decodingYeswhich decoder produced this path
segmentsYesruns of one label as 1-based inclusive residue spans
posteriorYesper-residue posterior probability of each label — the confidence behind the path

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description goes beyond that by disclosing the output shape (labelled path, residue-span runs, per-residue posterior) and a real runtime behaviour: the host loads the model once per session and the tool refuses by name when it has not been loaded. That failure mode is genuinely useful context an agent cannot get from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the identity of the tool before the outputs and the prerequisite, and no filler. The middle sentence describing return contents partially overlaps the existing output schema, which is the only slight redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only analytical tool with a full output schema and fully documented parameters, the description supplies the remaining essentials: the algorithm, the residue-level decoding semantics, and the model-loading precondition. Only the routing relative to sibling membrane tools is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the decoding enum is already fully annotated in the schema (including relative cost of 'n-best'), so the description need not carry parameter meaning. It adds only the indirect notion of residue-by-residue decoding, hence the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource — transmembrane topology of a protein — and names the specific method (HMM-TM 114-state HMM, JUCHMME, Bagos et al.) plus the three output artefacts, so an agent knows exactly what computation runs. It is clear and specific, but it never names or contrasts with the nearest sibling (protein_membrane_profile), leaving the agent to infer which membrane-analysis tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to choose this tool versus protein_membrane_profile, protein_signal_peptide or protein_disorder, all of which operate on the same input. The only conditional statement is a prerequisite (the trained model must be loaded), not a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quantify_base_editingA
Read-only
Inspect

Quantify BASE EDITING from a single Sanger trace, with no control read — the EditR method (Kluesner et al. 2018), ported and graded against the authors' own R. A base editor makes no double-strand break and no indel, so it is invisible to ICE and TIDE: the edit is a C→T or A→G inside the protospacer that shows up only as a second peak under the called base. This models the trace's OWN background from the positions outside the guide, then p-values every base of the guide against it. Emits the significant calls, so a pipeline can gate on whether editing happened and at which position.

NameRequiredDescriptionDefault
guideYesthe protospacer, 5'→3', without the PAM. Matched exactly against the read's own base calls; the coordinates it lands on come back in the result.
trim3Nolast base of the read the background model may be fitted on, 1-based inclusive. Pair it with `trim5`.
trim5Nofirst base of the read the background model may be fitted on, 1-based inclusive. GIVE BOTH BOUNDS OR NEITHER — upstream errors on a lone one rather than filling the other in. Left unset, upstream's automatic rule runs: drop the first 20 bases, then drop every base whose total peak height is under a tenth of the mean of what is left. The window is an INPUT to the answer, not a view: it is what the noise is estimated from, so tightening it lowers the cut-off.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace file to read: its name (`read_F.ab1`) or its project file id. LEAVE IT EMPTY to run on the chromatogram tab that is open. A file id is project-specific, so a template ships this unset.
guide_endNothe other end of an explicit placement, 1-based inclusive. Pair it with `guide_start`.
guide_startNoplace the guide yourself, 1-based inclusive in the read's own base calls, instead of matching it exactly. GIVE BOTH BOUNDS OR NEITHER. This is what a read carrying a sequencing error inside the protospacer needs: the analysis tests the bases you point at rather than refusing the read.
p_value_cutoffNoa base is called as edited when its share of the position's signal clears this trace's own noise model at this probability. EditR's own default is 0.01.
guide_is_reverse_complementNosearch for the guide's reverse complement. A C→T edit on the guide strand then reads as G→A in the result.

Output Schema

NameRequiredDescription
callsYesevery significant call: { guidePosition, index, guideBase, base, percent, pValue }, biggest first
editedYeswhether ANY base of the guide carries a non-reference signal above this trace's own noise. Wire it into a gate
reportYesthe whole run: every guide position with all four base percentages and p-values, the four fitted noise models and their cut-off lines. This is what makes a negative checkable — 'no editing' and 'the model could never have fired' look identical without it
topChangeYesthe biggest call as `reference→edited`, e.g. `C→T`. Empty when there is none
guideStartYes1-based position in the read's own base calls where the guide was found — what a canvas needs to draw it
topPercentYesits share of that position's total peak height, 0–100
topPositionYesthe guide position (1-based) of the biggest call, or 0 when there is none

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, non-destructive), so the bar is lower, but the description adds real behavior: it models the trace's own background from outside the guide, p-values each base, and emits significant calls so a pipeline can gate. It does not cover failure modes or what happens on an ungradeable read, but the analytical behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core method and scope, then the biological rationale, then the output behavior—a sensible ordering. It is somewhat dense across four sentences, 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with a rich schema and an output schema, the description supplies the method, the biological premise, and the emitted result without redundantly re-explaining return values. What it omits—edge cases and prerequisite file handling—is largely covered by the schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the parameter burden and a 3 is the baseline. The description adds only marginal meaning (the no-control premise, guide matching), while the genuinely useful parameter nuance—the trim window as a noise input that lowers the cut-off—lives in the schema, not the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Quantify base editing from a single Sanger trace') and pins the exact method (EditR, Kluesner et al. 2018). It distinguishes itself from adjacent tools like tide_quantify_indels and detect_trace_indel by explaining that base edits make no DSB or indel. An agent can identify the tool's niche 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly sets the usage context ('single Sanger trace, with no control read') and explains that base edits are invisible to ICE/TIDE, which implicitly tells the agent when this tool is the right one. However, it never names a sibling tool to use instead in the control-bearing or indel case, so routing is inferential rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quantify_dpcrA
Read-only
Inspect

Digital PCR (dPCR) partition counts to absolute concentration, with no standard curve. Positives and accepted partitions become lambda = -ln(1 - k/n), lambda becomes copies per uL through the partition volume and the dilution chain, and the confidence interval is carried on the lambda scale under any of eleven published binomial interval methods. Returns the dMIQE-2020 occupancy QC beside every reading, so a well with no positives, or one saturated past 95% occupancy, is reported as such rather than as a number.

NameRequiredDescriptionDefault
wellsYesthe well table: `Well,Sample,Target,Positives,Partitions`. Instrument column names are accepted as they are printed (Bio-Rad's `AcceptedDroplets`, QIAcuity's `Valid partitions`), so a real export needs no renaming.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
ci_methodNowhich binomial confidence interval is carried onto the lambda scale. Values: agresti-coull (Agresti–Coull), asymptotic (Asymptotic (normal approximation)), bayes (Bayes (Jeffreys prior, highest-density)), cloglog (Complementary log-log), exact (Exact (Clopper–Pearson)), logit (Logit), lrt (Likelihood ratio), probit (Probit), prop.test (Score test inverted, continuity-corrected), profile (Profile likelihood), wilson (Wilson score). Advanced.wilson
volume_cvNocoefficient of variation of the partition volume, as a percentage. Ignored under the `poisson` model. There is no universal value and inventing one would fabricate the exact quantity the correction consumes - the one figure this repo has a published source for is QuantStudio 3D chip (Majumdar 2017) at 3.03 %, and that paper says the vendor re-estimates it per chip rather than treating it as a platform constant. In %. Only applies when volume_model is normal or truncated.
conf_levelNoconfidence level for the interval. Advanced.
ratio_targetNothe assay whose COPY NUMBER you want, named as it appears in the table's Target column. Leave it and `ratio_reference` unset and no copy number is reported at all — a guessed pair is a fabricated comparison.
volume_modelNohow partition-volume SPREAD is handled (QP-5c). `poisson` is the standard estimator and assumes every partition holds the same volume. The two Poisson-Plus arms (Majumdar 2017) integrate the Poisson negative probability over a normal volume distribution and invert it: `normal` is the closed-form Eq (9), `truncated` the exact Eq (13) over a normal cut off at zero, which is the honest density because a partition cannot hold a negative volume. The spread biases the standard estimate DOWNWARD, hard at high occupancy and not at all at low. Values: poisson (Standard Poisson (no correction)), normal (Poisson-Plus, normal (Eq 9)), truncated (Poisson-Plus, truncated normal (Eq 13)).poisson
dilution_factorNofold dilution applied to the sample before the reaction (2 = diluted 1:2). Advanced.
ratio_referenceNothe assay it is measured against: the single-copy or known-ploidy reference, again by its Target name.
merge_replicatesNopool wells that share a sample and target before quantifying. Replicates of one measurement are one measurement, and pooling the COUNTS is the correct way to combine them, never averaging concentrations.
reference_copiesNocopies of the REFERENCE target per genome. 2 is a diploid autosome, 1 a haploid or single-copy locus. Advanced.
reaction_volume_ulNototal reaction volume, for copies per reaction. In uL.
template_volume_ulNovolume of template added to the reaction. Left at 0 the sample-concentration row is omitted rather than guessed. In uL. Advanced.
partition_volume_nlNomean volume of ONE partition. A per-platform constant, not a universal one (Bio-Rad QX200 approx 0.85 nL, QIAcuity 26k approx 0.34 nL, QuantStudio 3D approx 0.755 nL), and dMIQE 2020 requires it to be reported with the result. In nL.

Output Schema

NameRequiredDescription
rowsYesone reading per well, or per pooled replicate group: occupancy, lambda with its interval, and every concentration the supplied volumes support
countYeshow many readings were produced
ratiosYestarget-vs-reference copy number per sample, with the exact Poisson rate ratio and its interval rescaled onto the concentration scale the number is on. Empty when no assay pair was named — never a guessed pair
flaggedYesreadings carrying at least one dMIQE occupancy flag
ciMethodYesthe interval method that produced the bounds: a CI without its method is not comparable
confLevelYesthe confidence level every interval in `rows` was computed at
volumeModelYeshow partition-volume spread was handled. `poisson` means it was not — a concentration without this is not comparable with one that was corrected
volumeCvPercentYesthe volume spread the correction used, echoed for the same reason as the partition volume: it changed the number
partitionVolumeNlYesthe partition volume the concentrations were computed at, echoed because dMIQE requires it to travel with the number

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. Beyond that, the description adds genuine behavioral content: the QC behavior (wells with zero positives or >95% occupancy are flagged rather than silently numbered) and the fact that the CI is carried on the lambda scale. It does not discuss performance limits or failure modes, but the added context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single dense paragraph that is well front-loaded: the purpose comes first, then method, then QC output behavior. Nearly every clause carries information, though the lambda-to-copies chain is written in a somewhat breathless run-on that could be split for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. With annotations covering the safety profile and a 100%-covered schema, the description supplies the remaining missing piece - the definition of what the tool computes and how QC anomalies surface - making the definition complete for a 15-parameter analytical tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; but the description body adds integrative meaning the schema cannot, tying Positives/Partitions to lambda, then lambda to copies/uL through partition_volume_nl and dilution_factor, and naming the eleven ci_method variants as a scale-carried interval. This explains how the parameters interoperate rather than restating each one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource: converting dPCR partition counts to absolute concentration without a standard curve. It is trivially distinguishable from qPCR siblings (call_cq, bootstrap_cq) and droplet-classification siblings (classify_droplets, gate_droplets). The method chain (positives/accepted partitions -> lambda -> copies/uL) is spelled out, so the agent knows exactly what computation is performed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'with no standard curve' implicitly contrasts it with qPCR-based quantification, and the input shape (a well table) signals the entry condition. However, it never states when to choose this over alternatives, nor any exclusion or prerequisite beyond the obvious. Usage is inferable, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_databaseA
Read-only
Inspect

Ask one of the ~60 authoritative databases a question and hand its rows downstream — Ensembl, UniProt, ClinVar, gnomAD, ChEMBL, PubChem, InterPro, STRING, PDB, AlphaFold, the GWAS Catalog, PubMed and the rest. Nothing here computes science: a connector returns what the authority already published, which is the rule that an authoritative registry outranks anything kept locally.

NameRequiredDescriptionDefault
limitNocap on rows returned, where the authority honours one.
queryYeswhat to ask, in the authority's own terms — an identifier, a gene symbol, or one of its command forms such as `ensembl_lookup:BRCA2`.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
authorityYeswhich database to ask. Values: pubmed (NCBI PubMed (E-utilities) — literature), pmc-idconv (NCBI PMC ID Converter — literature), europepmc (Europe PMC — literature), openalex (OpenAlex — literature), crossref (Crossref — literature), arxiv (arXiv — literature), biorxiv (bioRxiv — literature), medrxiv (medRxiv — literature), datacite (DataCite — literature), ensembl (Ensembl REST — genomics), ucsc (UCSC Genome Browser API — genomics), biomart (Ensembl BioMart — genomics), mygene (MyGene.info — genomics), ncbi-gene (NCBI Gene (E-utilities) — genomics), hgnc (HGNC (genenames.org) — genomics), gnomad (gnomAD (Broad) — genomics), clinvar (NCBI ClinVar — genomics), dbsnp (NCBI dbSNP — genomics), variation (NCBI Variation Services — genomics), cadd (CADD (Kircher lab) — genomics), gtex (GTEx Portal — genomics), eqtlcatalogue (eQTL Catalogue (EBI) — genomics), gwascatalog (GWAS Catalog (EBI/NHGRI) — genomics), pheweb (PheWeb / FinnGen — genomics), uniprot (UniProt — proteins), interpro (InterPro / Pfam (EBI) — proteins), string (STRING — proteins), proteinatlas (Human Protein Atlas — proteins), alphafold (AlphaFold DB (EBI) — proteins), pdb (RCSB PDB — proteins), emdb (EMDB (EBI) — proteins), complexportal (Complex Portal (EBI) — proteins), intact (IntAct (EBI) — proteins), chembl (ChEMBL (EBI) — chemistry), pubchem (PubChem (NCBI) — chemistry), chebi (ChEBI (EBI) — chemistry), bindingdb (BindingDB — chemistry), zinc (ZINC (CartBlanche, UCSF) — chemistry), rhea (Rhea (EBI) — chemistry), clinicaltrials (ClinicalTrials.gov — clinical), openfda (openFDA — clinical), opentargets (Open Targets Platform — clinical), civic (CIViC — clinical), clingen (ClinGen (erepo.genome.network) — clinical), cosmic (COSMIC via NLM Clinical Tables — clinical), depmap (Cell Model Passports (Sanger) — clinical), cbioportal (cBioPortal — clinical), geo (NCBI GEO — omics), arrayexpress (ArrayExpress / BioStudies (EBI) — omics), pride (PRIDE (EBI) — omics), metabolights (MetaboLights (EBI) — omics), mgnify (MGnify (EBI) — omics), encode (ENCODE Project — omics), jaspar (JASPAR (Elixir) — omics), unibind (UniBind (Univ. of Oslo) — omics), cellguide (CellGuide (CZI CELLxGENE) — cells), panglaodb (PanglaoDB — cells), antibodyregistry (Antibody Registry (RRID) — cells), ols (OLS4 (EBI) — ontology), quickgo (QuickGO (EBI) — ontology), identifiers-org (identifiers.org registry — ontology), ncbi-taxonomy (NCBI Taxonomy (E-utilities) — ontology), reactome (Reactome — ontology), kegg (KEGG — ontology), rfam (Rfam (EBI) — ontology), grantsgov (Grants.gov — funding).

Output Schema

NameRequiredDescription
countYeshow many rows came back
resultsYesthe rows the authority returned — wire into filter_items, check_rows or summarize_rows
envelopeYesthe whole response, for a row shape this node's `results` does not name
authorityYeswhich authority answered, stated rather than implied
endpointsYesthe URLs actually called — the provenance a methods section needs
retrievedAtYeswhen it was fetched, because a live lookup is a fact about a moment

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds meaningful non-obvious behavior: it is a pass-through connector to external registries, results are what the authority published, and authoritative registries outrank local data. It omits per-authority auth requirements, rate limits, and failure behavior for unavailable connectors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and scope, then a short rationale for why connectors behave the way they do. The second sentence is longer than strictly necessary but it earns its place by establishing the authority-over-local-data rule. Minor verbosity in the database enumeration, which the enum already lists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shapes need not be explained, and all five parameters are documented in the schema with 100% coverage including the nested _subject object. The description covers purpose and the pass-through behavioral model; the only real gap is sibling differentiation from the dedicated lookup_* tools, which matters given how many lookups populate the sibling list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the authority enum already documents all 60+ databases, so the schema does the heavy lifting. The description adds only the notion that the query is expressed 'in the authority's own terms', which the schema's query description already conveys via the ensembl_lookup:BRCA2 example. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('ask one of the ~60 authoritative databases a question and hand its rows downstream') and names concrete authorities, so the agent knows exactly what class of operation this is. It does not, however, distinguish itself from dedicated siblings like lookup_gene, lookup_variant or search_literature, leaving ambiguity about when a federated query beats a purpose-built lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Nothing here computes science: a connector returns what the authority already published' implies the tool is for retrieving published records rather than computing derived results, which is useful framing. But no explicit when-to-use/when-not or named alternative is given, so the agent must infer that query_database replaces (or complements) lookup_gene, search_literature, fetch_record, etc.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_next_testsA
Read-only
Inspect

Rank candidate experiments by what running them would TEACH — Lindley's expected information gain, the drop in uncertainty about a hypothesis expected before anything is run. Three grains: tests ranks candidate falsification tests against the beliefs a discovery ledger holds, each with the posterior its two outcomes would leave, by gain and separately by gain per unit cost; measurements says what n readings of a normal quantity would teach, and how many it takes to reach a target; trials says the same for a rate held as a Beta. A gain is what a result would settle whichever way it lands — never evidence that a hypothesis is true, which stays with the ledger's e-values.

NameRequiredDescriptionDefault
nNohow many measurements the run would take. Only applies when mode is measurements.
betaNothe Beta prior's β — failures already believed in. Only applies when mode is trials.
modeNowhich grain of the question: rank candidate tests, size a run of measurements, or size a run of trials. Values: tests (Candidate tests), measurements (Measurements of a mean), trials (Trials of a rate).tests
alphaNothe Beta prior's α — successes already believed in. Only applies when mode is trials.
testsNothe candidates, each `{id, hypothesis, power, alpha}` and optionally `cost`, `reads` (what it would read) and `label`. Only applies when mode is tests.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
ledgerNoa jane.discovery-ledger file, as `run_discovery_programme` returns: its elicited beliefs and the sources its evidence already read. Only applies when mode is tests.
trialsNohow many trials the run would take. Only applies when mode is trials.
beliefsNobelief that each hypothesis is true, as `{hypothesisId: probability}` — given directly, or to override the ledger's. Only applies when mode is tests.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
noise_sdNothe measurement noise, in the same units. Only applies when mode is measurements.
prior_sdNohow uncertain the mean is now, as a standard deviation. Only applies when mode is measurements.
target_bitsNoa gain to reach: the answer says how many measurements it would take. Only applies when mode is measurements.

Output Schema

NameRequiredDescription
bestYesthe most informative candidate's id, or the mode's own answer in words
bitsYesthe expected information gain of the top answer, in bits
gainYesthe gain itself: nats, bits, and the entropies before and after. Absent when candidate tests were ranked, where each one carries its own
noteYeswhy a ranking is short or empty, when it is
byCostYesthe same candidates ordered by gain per unit cost, when every one was priced
rankedYesevery ranked candidate: gain, gain per unit cost, the prior it stands on and the posterior each outcome would leave
resultYesthe full answer, with the settings that produced it
beliefsYesthe belief each hypothesis was ranked against, and where it came from
samplesForTargetYeshow many measurements reach `target_bits`; null when no target was set

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the safety annotations, the description provides deep, sophisticated behavioral context by explaining the underlying mechanism—Lindley's expected information gain—and clarifying the philosophical difference between 'gain' and 'evidence that a hypothesis is true.' This is crucial for a Bayesian modeling tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly dense and technical, which is appropriate given the complexity of the topic (Bayesian design). It is structured well by introducing the core concept first, followed by the three specific application 'grains'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the extreme complexity of the domain and the 100% schema coverage, the description successfully provides the necessary high-level context (why, when, and how the three modes differ) that allows an agent to utilize the tool correctly in a decision-making flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema coverage is 100%, the description adds significant conceptual meaning by linking the parameters to the three grains. For instance, it explains that the 'tests' grain ranks against a discovery ledger's beliefs, providing essential context for how the inputs relate to the overall function.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description provides an exceptionally specific purpose: to rank candidate experiments based on Lindley's expected information gain (what running them would TEACH). It immediately details the three distinct modes—'tests', 'measurements', and 'trials'—which precisely scopes the tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly guides the user on the conceptual use of the three modes: 'tests' for falsification against beliefs, 'measurements' for sizing a run of readings, and 'trials' for sizing a rate run. This distinguishes between the tool's capabilities effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_reference_genesA
Read-only
Inspect

Which candidate reference gene is actually stable, ranked by all four published algorithms at once plus the RefFinder consensus: geNorm (pairwise variation M), NormFinder (intra/inter-group variance), BestKeeper (SD of raw Cq and correlation to the index) and the comparative delta-Ct method. They disagree on real plates, which is the point of running them side by side; the consensus is the geometric mean of the four ranks. Also returns geNorm's pairwise variation V(n/n+1), whose 0.15 cutoff is what says HOW MANY genes to normalise to.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
cq_tableYesthe long-format table: `Target,Sample,Cq`, one row per measurement. A fourth `Group` column is optional and is what unlocks NormFinder's GROUPED arm; without it NormFinder answers a different question and the result says so.
normfinder_armNowhich NormFinder to run. `auto` uses the grouped model when the table has a Group column and the ungrouped one when it does not; `ungrouped` forces the variance-only estimate even on a grouped table. They answer DIFFERENT questions — grouped separates intra- from inter-group variation, ungrouped cannot — so this is a choice, not a fallback. Values: auto (Auto (grouped when the table says so)), ungrouped (Ungrouped (force)). Advanced.auto

Output Schema

NameRequiredDescription
genormMYesgeNorm's stepwise elimination: the M value of every target at every step
groupedYeswhether NormFinder ran its grouped arm, and why not when it did not
rankingYesthe consensus ranking, most stable first, with every algorithm's own rank beside it
pairwiseVYesV(n/n+1), the pairwise variation that answers how many reference genes are enough. Below 0.15 an extra gene is not worth it (Vandesompele 2002)
perMethodYeseach algorithm's own order and 1-based ranks, so a consensus can be read back to the four opinions behind it
mostStableYesthe consensus winner, named
recommendedCountYesthe smallest n whose V(n/n+1) falls under 0.15, or 0 when none does. A 0 means this plate does not support the usual answer, not that the run failed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only operation (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds that it computes four algorithms plus a consensus and returns geNorm's pairwise variation. It does not disclose operational constraints such as input validation or runtime, but it adds useful computational context beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and dense with relevant technical detail. The sentences are long and parenthetical, but each conveys distinct algorithm or consensus information, and the length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the presence of an output schema, complete parameter descriptions, and annotations covering safety, the description supplies the needed domain context about the four algorithms and RefFinder consensus. Nothing required for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description explains the NormFinder grouped/ungrouped distinction and geNorm pairwise variation conceptually, but these are already covered by the schema's cq_table and normfinder_arm descriptions; it adds no extra syntax or constraint mapping.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: ranking candidate reference genes by stability. It names the four published algorithms and the RefFinder consensus, which differentiates it from generic stability or concordance siblings. An agent can tell what this tool 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the rationale for running all four algorithms side by side and what geNorm's pairwise variation cutoff tells you, giving clear context for when the tool is appropriate. It does not name alternative sibling tools or state when not to use it, so it stops short of explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_strategiesA
Read-only
Inspect

Compare EVERY assembly chemistry this engine has against one set of parts, and say what each one costs and risks. It runs them all, keeps the ones that really produce a construct, and reports the rest with the refusal the chemistry itself gave — so 'Golden Gate is the only way to build this, and its overhangs ligate correctly 99.8% of the time' is one step rather than six runs and a spreadsheet. There is deliberately no single 'best' score: combining the criteria needs weights nobody has settled, and the one criterion every published ranking leads with (cost) has no price this app can honestly cache. So the comparison is the answer, and the sort is by whichever criterion you name.

NameRequiredDescriptionDefault
partsNothe parts to assemble, in order — order is meaningful for Type-IIS. Wire records in, or name project documents.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNoType-IIS enzyme for the chemistries that use one. `auto` is DnaCauldron's own default: it picks the enzyme from the sites the parts carry.auto
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
order_byNowhich criterion to order the feasible strategies by. Every criterion is reported for every strategy whichever one you pick. Values: steps (Steps (lower is better)), junctions (Junctions (lower is better)), primers (Primers (lower is better)), overhangFidelity (Overhang fidelity (higher is better)), weakestJunctionTm (Weakest junction Tm (higher is better)), framesBroken (Frames broken (lower is better)), diagnosticCutters (Diagnostic cutters (higher is better)), cost (Cost (lower is better)).junctions
digest_enzymesNothe enzymes a verification digest may use. Left unset the run uses your active enzyme collection; with neither, the diagnostic-digest criterion is reported as unavailable rather than guessed, because a digest is only meaningful against enzymes you have.

Output Schema

NameRequiredDescription
bestYesthe chemistry at the top of the order you asked for — a position in that order, not a verdict. Null when no chemistry built these parts
rankedYesevery feasible strategy in order, each with every criterion and the reason for any it could not score
refusedYesthe chemistries that produced nothing, each with the refusal it gave. Never dropped: 'this cannot be built that way, and here is why' is half the answer
criteriaYesthe criteria themselves: what each one means and which direction is better
feasibleYeshow many chemistries produced a construct from these parts
notScoredYescriteria NO strategy could score, with the reason — so an empty column says why it is empty

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish read-only, non-destructive behavior. The description adds valuable operational context: it runs every chemistry, keeps only strategies that produce a construct, reports refusals from the chemistry itself, and deliberately avoids a single 'best' score because weights are unsettled and cost cannot be cached.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with its purpose, but it spans five sentences with an illustrative example and a philosophical rationale for the lack of a single score. Some of this elaboration could be tightened, making it less concise than optimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex schema and the presence of an output schema, the description covers the tool's purpose, execution behavior, and ranking limitations well. It does not need to explain return values, and parameter defaults are left to the schema, so it is largely complete though it could state prerequisites more explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters including the order_by enum. The description adds little parameter-level meaning beyond noting that the sort is by whichever criterion is named, which is already conveyed by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Compare') and resource ('EVERY assembly chemistry this engine has') and states the scope ('against one set of parts') and outputs ('costs and risks'). This clearly differentiates it from siblings that design, simulate, or check a single assembly route.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear context for use: comparing all assembly chemistries in one step instead of six runs and a spreadsheet. However, it names no specific alternative tool and gives no explicit when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rank_tradeoffsA
Read-only
Inspect

Which candidates in a table are not beaten on every objective at once: Pareto (non-dominated) sorting of rows scored on several columns, each to maximize or minimize. Returns each candidate's front (1 = non-dominated), the candidate one front up that beats it, and its crowding distance within its front (how isolated it is, so a short list can be spread along the front). Rows can be filtered first (em_max>=580, agg=m), and rows with an empty objective are left out and counted, never ranked last. moocore 0.3.2's pareto_rank and is_nondominated, emoa 0.5-3's and pymoo 0.6.2's crowding distances, reproduced.

NameRequiredDescriptionDefault
labelNothe column naming each candidate. Left unset, the first column.
orderNowhat orders candidates within a front: crowding distance (how isolated each is), or exclusive hypervolume contribution (how much of the objective space the front loses without it). Values: crowding (crowding distance), hypervolume (hypervolume contribution).crowding
tableYesthe candidates: a header row, then one row per candidate. Comma- or tab-separated, quoted cells allowed.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
filterNokeep only rows passing every clause, separated by commas: a column, one of = != >= <= > <, and a value (`em_max>=580, agg=m`). Numbers compare as numbers; a blank cell passes no ordering clause.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
crowdingNohow isolation along a front is measured: NSGA-II's normalized distance (each gap over the objective's range, averaged), or the raw sum of gaps in each objective's own units. Values: normalised (NSGA-II (normalized)), raw (raw gaps). Advanced.normalised
maximiseNothe columns where higher is better, separated by commas.
minimiseNothe columns where lower is better, separated by commas.
referenceNothe hypervolume's reference point, one `column=value` per objective (`brightness=0, maturation=500`), each worse than every candidate. Left unset, each objective's worst value pushed out by 10% of its range. Only applies when order is hypervolume. Advanced.
keep_duplicatesNokeep every copy of candidates with identical values on the first front; off keeps the first copy and names it as what the others duplicate. Advanced.

Output Schema

NameRequiredDescription
frontYesthe non-dominated candidates (front 1), most isolated first
orderYeswhat ordered candidates within a front: crowding or hypervolume
countsYesrows in the table, filtered out, left out for an empty objective, ranked
frontsYeshow many candidates sit on each front
rankedYesevery candidate ranked: front, flag, crowding distance, the candidate that beats it, its objective values
referenceYesthe reference point the hypervolume was measured from, and whether it was derived (hypervolume order only)
hypervolumeYesthe objective space front 1 dominates up to the reference point (hypervolume order only)

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered, yet the description adds real behavioural depth: rows with an empty objective are dropped and counted rather than ranked last, blank cells satisfy no ordering clause in the filter, and duplicate handling on the first front changes with keep_duplicates. It also discloses the default reference-point construction (worst value pushed out by 10% of range). This is concrete disclosure well beyond the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core definition is front-loaded in the first clause and the rest of the paragraph is dense but earned for an 11-parameter tool. It is a single long block rather than structured sections, which costs a little scannability, but there is very little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters, nested objects, and an output schema, the description covers the essential semantics: filtering, ordering modes, exclusion of unscoreable rows, and duplicate handling. An output schema exists so return values need not be spelled out, though the description explains them anyway. Minor knobs (label, maximise/minimise) are left entirely to the schema, which is acceptable given full schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description largely echoes what the schema already says — the filter clause example, the crowding/hypervolume meanings, and the reference-point syntax all duplicate existing parameter descriptions. Its only marginal additions are behavioural (how blank cells and empty objectives interact with the filter).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation and resource: Pareto (non-dominated) sorting of table rows scored on several objective columns, with each column maximised or minimised. That is far more than a restatement of the name and an agent can tell it apart from generic 'rank_*' siblings by the multi-objective framing. It does not, however, explicitly distinguish itself from near-name siblings such as rank_strategies or rank_next_tests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the agent can infer this is the tool for multi-objective trade-off ranking of a table. There is no explicit 'use this when...' clause, no named alternative, and no statement of when another ranking tool would be preferable. The filter mechanics are described, but not when to reach for this tool versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_mgfA
Read-only
Inspect

Read the MS/MS spectra of a Mascot Generic Format (MGF) file: each spectrum's title, precursor m/z, precursor intensity, declared charge states and peak list, interpreted as pyteomics reads MGF (validated on every spectrum of PXD000001). A spectrum it returns is what score_spectrum takes as mz, intensity and precursorCharge.

NameRequiredDescriptionDefault
textYesthe MGF file's contents.
titleNoreturn only the spectrum with this title; empty returns every spectrum.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYesspectra returned
spectraYesone row per spectrum: title, precursorMz, precursorIntensity, charges, mz, intensity

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the parsing is modeled on pyteomics semantics and validated against every spectrum of PXD000001, disclosing behavioral fidelity the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the verb and resource, then appends the field list and downstream consumer. Every clause earns its place, though the parenthetical validation note makes the sentence long and slightly harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering returns, the description supplies purpose, parse semantics, and the downstream link to score_spectrum. The only gap is explicit guidance against the sibling MGF/mzML readers, which is minor given the otherwise complete picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and an output schema exists, so the schema already documents the text, title, _files and _subject parameters. The description adds no syntax or format detail for any parameter, so the baseline 3 applies when structured fields do the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (MS/MS spectra of a Mascot Generic Format file), enumerated fields returned, and the exact sibling it feeds (score_spectrum). An agent can distinguish this from read_mzml 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage by stating the returned spectrum is what score_spectrum consumes, giving a downstream workflow link. However, it never states when to choose this over the sibling read_mzml or any explicit exclusions/conditions, leaving the primary routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_mzmlA
Read-only
Inspect

Read the spectra of a PSI mzML run file: each spectrum's native id, MS level, centroid or profile, scan start time and unit, base peak, total ion current, precursor (selected ion m/z, charge, intensity, isolation window) and peak arrays, interpreted as pyteomics reads mzML (validated on every spectrum of three real runs). An MS/MS spectrum it returns is what score_spectrum takes as mz, intensity and precursorCharge.

NameRequiredDescriptionDefault
idNoreturn only the spectrum with this native id; empty returns every spectrum.
textYesthe mzML file's contents.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
msLevelNoreturn only spectra at this MS level (0 returns every level).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYesspectra returned
spectraYesone row per spectrum: id, msLevel, scanStartTime, precursors, mz, intensity

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, and the description adds real context beyond them: interpretation semantics ('interpreted as pyteomics reads mzML') and validation provenance ('validated on every spectrum of three real runs'). It stops short of describing failure behavior on malformed input or memory/scale limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and resource, then lists the return fields compactly, ending with the downstream link to score_spectrum. The enumeration is dense but every clause carries information; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the return values need not be re-explained, yet the description accurately summarizes them, and it links to the consuming tool. Combined with rich annotations and full schema coverage, the definition is complete for correct invocation; only failure-mode behavior is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with id and msLevel already documented as filters, so the schema does the heavy lifting and baseline 3 applies. The description adds no additional param semantics (no mention of how id or msLevel interact, or the _subject/_files selection behavior).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (spectra of a PSI mzML run file), then enumerates the exact fields returned (native id, MS level, centroid/profile, scan time, base peak, TIC, precursor, peaks). This clearly separates it from format siblings like read_mgf without requiring the schema to be opened.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context: it reads mzML and its MS/MS output is exactly what score_spectrum consumes as mz, intensity and precursorCharge, which routes the agent along a concrete workflow. It does not, however, explicitly state when NOT to use it (e.g. use read_mgf for MGF input), so no true exclusions are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_rdml_runA
Read-only
Inspect

Read an instrument's RDML export - the open qPCR exchange standard, v1.0 to v1.4 - and hand back one run's contents as the same tables every other qPCR tool here takes. This is the step every qPCR analysis starts from. Lists what each run actually holds (amplification curves, melting curves, instrument Cq values, digital-PCR partition counts with the partition volume the file declares) before anything is imported, so a run is chosen on what is in it rather than on its name. Takes the UNCOMPRESSED XML: a .rdml archive is a zip, and the tool vocabulary here has no file input.

NameRequiredDescriptionDefault
runNowhich run to read, 0-based across every experiment in the file in document order. A file routinely holds several; `summary` lists them all whatever this is set to.
tableNowhich table to return for the chosen run. `summary` reads the file without importing anything. The other four are exactly what the panel's four `Send to ...` buttons produce, so a value imported here and one imported there cannot differ. Values: summary (Summary - what every run in the file holds), curves (Amplification curves - Cycle,<reaction>,...), cq (Instrument Cq values - the wide Ct table plus its group column), genorm (Instrument Cq values - long Target,Sample,Cq), melt (Melting curves - Temperature,<reaction>,...), partitions (Digital PCR partition counts - Well,Sample,Target,Positives,Partitions).summary
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
rdml_xmlYesthe RDML document as XML text - the `rdml_data.xml` member of a `.rdml` archive, or a bare `.xml` export. Not base64 and not a file path.

Output Schema

NameRequiredDescription
rowsYesdata rows in `table`, excluding its header
runsYesevery run in the file and what it holds - reactions, curves, melt curves, instrument Cq values, partition counts, the declared partition volumes, targets and samples
tableYesthe chosen run's table, as the text the matching tool's own parser takes. Empty when the run has nothing of that kind - which is a fact about the run, not a failure
groupsYesfor `cq`: one sample name per row of the Ct table, already aligned to it. The group column relative quantification needs
omittedYeswhat the import deliberately left out and why - wells whose Cq is RDML's -1 `not available`, and samples whose replicates do not square up across targets. Never padded and never zero-filled (a Ct of 0 is a fabricated measurement)
versionYesthe RDML version the file declares (1.0-1.4). The reader's behaviour differs by version and a table without it is not reproducible

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/destructive/openWorld, so the bar is lower, and the description still adds real behavioral context: it accepts only uncompressed XML (a .rdml archive is a zip), there is no file input in the vocabulary, summary reads without importing, and it lists what a run holds before import. It does not describe output tables in detail, but an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the core verb and resource, then the usage rationale, then the input-format constraint. Dense but each sentence carries distinct information; slightly verbose in the middle sentence enumerating run contents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with a full schema and an output schema, the description covers what an agent needs: what it does, when to reach for it, and the input constraint. The unexplained _subject/_files params are a minor gap but their schema descriptions carry the load.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents run, table, rdml_xml and the enum. The description echoes the run/table semantics (0-based runs, summary lists all) but adds no syntax or format detail beyond the schema. Baseline 3 is correct; note it never mentions the _subject/_files parameters at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Read an instrument's RDML export' and 'hand back one run's contents as the same tables every other qPCR tool here takes.' It pins down scope (one run), standard (open qPCR exchange standard v1.0-v1.4), and output shape, distinguishing it from the other qPCR tools in the vocabulary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'This is the step every qPCR analysis starts from' plus the framing that runs are chosen on content rather than name gives a clear entry-point context. It implies downstream consumers ('the same tables every other qPCR tool here takes') and warns about the compressed-input constraint, but names no concrete alternative sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_sequencing_qcA
Read-only
Inspect

Read the QC files a sequencing provider returns alongside the reads: a per-base COVERAGE table, or a Plasmidsaurus summary (k-mer composition and the contamination estimate with its named source). These are the numbers that say whether a disappointing read is the clone's fault or the run's — a base called wrong under 3x coverage is a sequencing problem, not a cloning one. For a coverage table it also measures the track's SHAPE, because a mean has none: a run averaging 200x with one uncovered region reads as excellent. The provider states one number and two shapes — 20x for an accurate consensus, and a large gap or a sudden large increase meaning an assembly issue or a mixture of plasmid species — so the longest stretch under the line and the largest change in level are both measured and located. How large is large is NOT a number they publish, and none is invented here: the shapes are reported and the call is the reader's.

NameRequiredDescriptionDefault
kindNowhich report this is; `auto` sniffs it. Values: auto (Detect from the contents), perbase (Per-base coverage table), plasmidsaurus (Plasmidsaurus summary).auto
textYesthe file's contents — a per-base coverage TSV (pos / ref / reads_all), or the provider's summary text.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
step_windowNopositions either side of a boundary whose MEDIAN depth is compared, when looking for a sudden change in level. A median over a window rather than two adjacent positions, so one spike is not a step and a real change in level is. Advanced.
coverage_lineNothe depth a position must reach to count as well covered. The default is the provider's own published line and nothing of ours; raise it for a construct you intend to publish.

Output Schema

NameRequiredDescription
kindYeswhich report was actually read
shapeYesthe coverage track's SHAPE: its median, how many positions fall under the line and in how many separate runs, the longest such run with its coordinates and its floor, and the largest change in level with the position it is at
perbaseYesper-base coverage: positions counted, mean/min/max read depth, and how many positions reach 20x
readingYeswhat the coverage track says, generated from the profile that was measured rather than from the request, with the provider's own sentence quoted as theirs
longestGapYespositions in the longest unbroken stretch under the coverage line — the provider's first warning shape. 0 means no position falls under it; null for a Plasmidsaurus summary, which has no track
minCoverageYesthe LOWEST depth anywhere in the read — the number that decides whether a disagreement with the reference is believable. Null for a Plasmidsaurus summary, which measures no depth
depthProfileYesthe depth track drawn: the MINIMUM and the mean depth per window, with the coverage line and the track's median as rules, so a drop-out reads as a drop-out rather than being averaged away. Null for a Plasmidsaurus summary, which measures no track
plasmidsaurusYesthe whole parsed summary, including the raw text it came from
largestStepFoldYesthe largest sustained rise in depth, as a multiple — the provider's second warning shape. Branch on this rather than re-deriving it from the profile. Null when no step could be measured (a track shorter than two windows, or a Plasmidsaurus summary): a 0 is not a fold
contaminationPctYesPlasmidsaurus' contamination estimate, as a percentage. Null when the summary states none, and for a coverage table: a 0 would read as a clean run nobody measured
positionsAbove20xYespositions at 20x or better, out of the total. Null for a Plasmidsaurus summary
contaminationSourceYeswhat the provider says the contaminant IS — the half of the estimate that tells you what to do about it. Null when the summary names none, and for a coverage table

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description goes well beyond by disclosing what is actually computed (longest stretch under the coverage line, largest change in level, both measured and located) and the epistemic stance that thresholds are not invented. That is meaningful behavioral context an agent cannot get 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then motivation, then the epistemic caveat – a sensible order with no wasted preamble. Some rhetorical phrasing ('a mean has none') costs a little compactness across a fairly long block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema carries return values and annotations carry safety, so the description need only cover intent and interpretation, which it does thoroughly. It is silent on the nested _files/_subject project-reference parameters, a real gap for a tool with nested object inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3; the description adds interpretive meaning by explaining why a mean is insufficient and how the coverage line and shape measures relate to the provider's stated criteria. It does not address _files/_subject, but coverage_line and step_window get real semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: reads QC files a provider returns, naming the two supported forms (per-base coverage table, Plasmidsaurus summary with k-mer composition and contamination source). An agent immediately knows what they get. It never names the nearby tools (fastq_qc, verify_read, compare_reads_to_reference), so the distinction from siblings is left implicit, which holds it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear diagnostic trigger – 'these are the numbers that say whether a disappointing read is the clone's fault or the run's' – which tells the agent exactly when to reach for it. No explicit when-not-to-use or named alternative (e.g. fastq_qc for raw read stats) is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_structureA
Read-only
Inspect

Read a structure file — PDB, PDBx/mmCIF, or a core CIF small-molecule crystal structure — and report what is in it: the chains and what kind each is, their sequences, the ligands and ordered solvent, the disulfides, the residues the depositor declared modified, the temperature-factor range, the unit cell and space group, the resolution and the experiment. Use it to answer what a structure IS before deciding what to do with it, or to pull a chain's sequence out of a structure so it can be aligned, back-translated or ordered. Reading only: it never writes a structure file and never applies symmetry, so every count it reports is a count of what the file actually holds — for a core CIF that is the asymmetric unit, not the whole cell.

NameRequiredDescriptionDefault
textYesthe coordinate file's contents — a PDB flat file, a PDBx/mmCIF, or a core CIF; the format is read from the bytes, not from a name, because .cif is shared by two unrelated dictionaries.
modelNowhich model of an ensemble to describe, 1-based. An NMR entry holds many complete conformers and they are alternatives rather than parts, so the counts always describe ONE of them. The upper bound is the FILE's, so it is not declared here — an out-of-range model is refused by name, with the range that exists.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
idYesthe 4-character entry id the file declares about itself, empty when it declares none
cellYesunit cell and space group, absent for a determination with no crystal
atomsYesatoms in the model described
titleYesthe entry's own title line
chainsYesone row per chain: id, polymer kind, residue and atom counts, the author numbering range, and the observed one-letter sequence
extentYesthe longest side of the bounding box in angstroms — whether this will fit a pore, a groove or a box
formatYeswhich reader actually ran: `pdb`, `mmcif`, or `smallcif` for a core CIF (small-molecule crystallography, which shares the .cif extension with mmCIF and is a different dictionary)
methodYesthe experimental technique(s) — genuinely more than one for a neutron/X-ray structure
modelsYesconformers in the file; more than one means an ensemble
watersYesordered solvent molecules, counted separately from ligands
bFactorYesmin, max and mean isotropic B over every atom, or null when the file states none
dialectYesthe same answer in words, for a reply to quote
formulaYesthe empirical formula the file STATES about itself (`_chemical_formula_sum`), empty when it states none. For a crystal structure it describes the contents of the CELL, so it can name more atoms than the sites listed
helicesYeshelices the DEPOSITOR annotated (not a calculation over the coordinates)
ligandsYesnon-water heteroatom components with how many copies of each — the ions, cofactors and bound compounds
strandsYesstrands the depositor annotated
modifiedYesmodified residues with the standard residue each stands in for, from the file's own MODRES / _pdbx_struct_mod_residue — the only authoritative source for what a component like MSE IS
residuesYesresidues in the model described, solvent included
warningsYeslines the reader could not parse, named rather than dropped
sequencesYesthe CONSTRUCT sequence per chain as the file declares it (SEQRES / _entity_poly), which includes residues that were never resolved
disulfidesYesdisulfide bonds the file annotates
hasPolymerYeswhether any chain is a polymer. False for a core CIF and for a coordinate set holding only a ligand — where `chains`, `residues` and `sequences` describe a wrapper rather than a molecule, and `atoms` is a count of symmetry-independent SITES
resolutionYesdiffraction limit in angstroms. 0 means the entry states NONE (an NMR determination has no resolution) — read `hasResolution` rather than treating 0 as sub-angstrom
hasResolutionYeswhether the entry states a resolution at all

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, but the description adds important context beyond them: it never writes a structure file, never applies symmetry, and reports counts of what the file actually holds. The core-CIF caveat that counts are of the asymmetric unit, not the whole cell, is a valuable behavioral detail not present in annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well structured: the first sentence front-loads what the tool reads and reports, and the second handles usage, the read-only constraint, and the asymmetric-unit caveat. Every clause carries useful information, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema, full schema description coverage, and rich read-only annotations, the description provides everything an agent needs to select and invoke the tool correctly. It covers purpose, use cases, non-mutation behavior, symmetry behavior, and the key core-CIF counting caveat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents text, model, _files, and _subject in detail, including the byte-based format detection and model-selection semantics. The tool description itself adds little parameter-specific meaning beyond the structured schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: read a structure file (PDB, PDBx/mmCIF, or core CIF) and report precisely what it contains. It enumerates the reported contents in concrete terms (chains, sequences, ligands, solvent, disulfides, modified residues, B-factor range, unit cell, space group, resolution, experiment), making the tool distinguishable from siblings that write or analyze structures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear use cases: answer what a structure IS before deciding what to do with it, or extract a chain sequence for alignment, back-translation, or ordering. It also states a when-not constraint against writing or applying symmetry, but it does not explicitly name sibling tools such as read_structure_consensus or write_structure_library as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_structure_consensusA
Read-only
Inspect

Read the consensus RNA secondary structure a Stockholm alignment states in its #=GC SS_cons line (WUSS, the notation Rfam and Infernal write), and measure how well the aligned rows actually support it. Reports the base pairs, what each unpaired column is (hairpin, bulge, multifurcation, external, insertion, local end), and per pair the fraction of rows whose two bases form a canonical or GU wobble pair. Use it to check whether a family's published structure is borne out by the sequences, or to pull a pair table out of an alignment for drawing. Reading only, and it REFUSES a Pfam alignment by name: SS_cons is two alphabets, and Pfam writes protein DSSP states in the same field, where C/H/E are pseudoknot letters in WUSS — parsing one as the other would invent base pairs for a protein.

NameRequiredDescriptionDefault
textYesthe alignment file's contents. Stockholm is the only format that records `#=GC` annotation, so a CLUSTAL or PHYLIP file is refused by name rather than returning an empty structure.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
rowsYesaligned sequences the support was measured over
pairsYesbase pairs the consensus states
rolesYesper column, what its glyph said: pair, hairpin, bulge, multifurcation, external, insertion or missing
columnsYesalignment width the annotation covers
supportYesper column, {observed, paired} or null where the column is unpaired — the denominator travels so a caller can say "no evidence" instead of drawing a zero
alphabetYeswhich alphabet the `SS_cons` line was written in: `wuss`, `protein-dssp`, or `unknown`
pairListYesevery pair as {i, j}, plus `knotLetter` when it came from a pseudoknot letter rather than a bracket
pairTableYesper column, its partner column or -1 — the same shape `pairTable` returns, so it wires straight into an arc drawing
medianSupportYesthe median, over pairs that any row spans, of the fraction of those rows forming a canonical or wobble pair. The panel's own headline number — a family whose structure is real sits high here, and a low value means the rows do not do what the annotation says

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a read-only, non-destructive, closed-world operation, and the description adds substantial context beyond that. It discloses that it refuses Pfam alignments by name and explains the alphabet-collision reason, which prevents a serious parsing error. It also describes what is reported, including column classifications and per-pair support fractions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core read-and-measure action, then follows with reporting details, usage guidance, and a necessary format exclusion. The Pfam explanation is somewhat lengthy but every part prevents a specific misuse, so it largely earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema and rich annotations, the description covers the essential behavioral and input constraints an agent needs. It explains the accepted format, the refusal case, the reported outputs, and the biological rationale for the Pfam exclusion, leaving no significant gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the parameters and the required `text` field. The description reinforces that `text` must be a Stockholm alignment but does not add syntax, format, or selection semantics for `_files` or `_subject` beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: reads the consensus RNA secondary structure from a Stockholm alignment's `#=GC SS_cons` line and measures how well aligned rows support it. It distinguishes itself from siblings like `read_structure` and `fold_rna` by naming the exact field, notation, and support measurement it provides.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly says when to use it: to check whether a published family structure is borne out by sequences, or to pull a pair table for drawing. It also gives explicit exclusions by format and source (Pfam, CLUSTAL, PHYLIP), but does not name specific alternative tools for those cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_variant_callsA
Read-only
Inspect

Read a variant call set (VCF, bgzipped VCF or BCF) in this project and return the records matching a query: a locus, a variant class, a QUAL floor, PASS-only, a sample that is not hom-ref, or an INFO key. Every answer says what it read over and what it filtered on, so a count can never be mistaken for the file's total. A call set too large to read whole opens at its header, and a locus is then the way in rather than an option.

NameRequiredDescriptionDefault
endNolast base of the region, 1-based and inclusive. Needs `contig`. Unset is the contig's last record.
fileNowhich call set in this project, by name. Unset, it is the project's only one, and it refuses rather than guessing when there is more than one.
limitNohow many matching records to return. The COUNT is always the full number of matches: this caps the rows, never the accounting.
startNofirst base of the region, 1-based and inclusive, as VCF itself counts. Needs `contig`. Unset is the contig's first record.
typesNokeep only these variant classes. The classes are htslib's own, assigned by the ported `setVariantType` and identical to the ones the panel's type filter offers. Unset keeps every class.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
contigNorestrict to one contig, named as the FILE names it: `20` and `chr20` are different names and neither is normalized into the other. With `start`/`end` this is a locus read; alone it is the whole contig.
sampleNokeep only records where this sample's genotype is neither hom-ref nor missing, which is that sample's own variants out of a cohort. Named as the file's header names it.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
info_keyNokeep only records carrying this INFO key; with `info_value`, only those where it equals that value.
min_qualNokeep only records whose QUAL is at least this. A record stating no QUAL (`.`) is DROPPED unless `include_missing_qual` is on, because a missing score is not a passing one.
pass_onlyNokeep only records whose FILTER is PASS or unset (`.`): the usual first question of a call set, and the one filter that changes what most downstream steps should see.
info_valueNowith `info_key`, the value that key must equal.
include_missing_qualNokeep records that state no QUAL when `min_qual` is set. Off by default: a caller asking for a quality floor is asking about scores, and a record with none has not met it.

Output Schema

NameRequiredDescription
readYeshow many records were read before filtering. For a locus read this is the records in that window, NOT the file (`scope` says which)
scopeYeswhether the numbers describe the whole file or one region, and (when the file was too large to read whole) that its header alone was opened. A count read from a window must never be readable as the file's
matchedYeshow many records matched: the full count, not the number of rows returned
samplesYesthe call set's sample names in header order, empty for a sites-only VCF, which is a fact about the file rather than a failure
summaryYeswhat was read and what matched, in one sentence generated from this run
variantsYesthe matching records, up to `limit`: chrom, pos (1-based), ids, ref, alts, qual, filters, end and the record's own htslib class label. Genotypes are not included: `sample` filters on them and `variant_call_summary` counts them, and a cohort record would otherwise carry thousands of columns per row
filters_appliedYesevery filter this run actually applied, with its value. A caller comparing two runs needs to know which asked the narrower question

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/safe/non-open-world, so the bar is lower. The description adds genuinely useful behavior: every answer reports what was read over and filtered on so a count is not the file total, and oversized call sets open at the header with locus as the access path. It omits any mention of limits on reading large files or performance throttling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the essential read-and-return behavior, then the count semantics and the large-file path. Dense but nearly every clause earns its place; a couple of phrases pad slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter, nested, complex read tool with an output schema present, the description covers purpose, filtering modes, count semantics, and large-file behavior. Return-value structure is delegated to the output schema, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already carries rich prose, so the baseline is 3. The description adds meaning by tying the parameters into query dimensions and clarifying the count-vs-rows distinction, but most of the per-parameter detail (normalization, missing-QUAL handling) lives in the schema, not the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (read a variant call set - VCF, bgzipped VCF or BCF - in this project) and enumerates the query dimensions it supports. An agent can tell this apart from variant_call_summary or read_sequencing_qc 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Enumerates the supported query modes (locus, variant class, QUAL floor, PASS-only, non-hom-ref sample, INFO key) and explains the large-file entry path via header/locus. It gives clear context for when the tool applies, but never names a sibling alternative or an explicit when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recombineAInspect

Recombination between molecules — Gateway BP/LR (att sites), Cre/loxP, a serine integrase whose two half-sites you supply, plain homologous recombination through shared arms, or a CRISPR knock-in that keeps only products whose repair region contains every guide's cut. Emits the first product as a NEW record for downstream nodes.

NameRequiredDescriptionDefault
site1Nothe recombinase's first half-site (e.g. attP). Case is meaningful: the lower-case middle is the overlap the enzyme crosses over in. Only applies when system is recombinase.
site2Nothe recombinase's second half-site (e.g. attB), same convention. Only applies when system is recombinase.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
greedyNopermissive att core matching. Only applies when system is gateway-BP or gateway-LR. Advanced.
guidesNoprotospacers whose cut must fall inside the repaired region — a product cut elsewhere by any of them is discarded and counted. Only applies when system is crispr-knock-in.
systemNorecombination system. Values: gateway-BP (Gateway BP (attB × attP → entry)), gateway-LR (Gateway LR (attL × attR → expression)), cre-lox (Cre / loxP), recombinase (Serine integrase (your two half-sites)), homologous (Homologous recombination (shared arms)), crispr-knock-in (CRISPR knock-in (guide-gated HR)).gateway-LR
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
fragmentsNothe molecules to react — wire upstream `record` outputs here, or name library documents.
homology_bpNoshortest homology arm that counts as a shared end. In bp. Only applies when system is homologous or crispr-knock-in.
circular_onlyNoreport only circular products.
include_subjectNoalso include the node's subject as a reactant.
multi_site_onlyNokeep only products where BOTH sites recombined (drops single-site intermediates). Only applies when system is gateway-BP or gateway-LR.

Output Schema

NameRequiredDescription
sitesYesper-input report of the recombination sites found
recordYesthe first product, as a record
productsYesevery product
discardedYesCRISPR knock-in only: products dropped because a guide also cuts OUTSIDE the repair. A non-zero count is a finding about the guide, not a warning to swallow
productCountYesnumber of products

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnly=false, destructive=false, openWorld=false, so the safety profile is already partly covered, and the description is consistent with it. The description adds genuinely useful behavior the annotations do not: the output is emitted as a NEW record for downstream wiring, and for CRISPR knock-in only products whose repair region contains every guide's cut survive (others discarded and counted).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the recombination scope and ending with the most decision-relevant output fact (new record for downstream nodes). The first sentence is long and runs through six systems, but each clause carries distinct information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description adequately frames the six modes plus the product-emission behavior for a 12-parameter, zero-required tool. It does not tie the optional modifiers (include_subject, circular_only, multi_site_only) to outcomes, but the schema covers those individually.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains site1/site2, greedy, guides, homology_bp, circular_only, multi_site_only, include_subject and the _subject/_files shapes. The description adds only the CRISPR guide-gating rule, which is not parameter syntax; the 3 baseline for full schema coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (recombination between molecules) and enumerates the exact six systems it supports, which maps directly to the enum and separates it from neighboring assembly tools like gibson_assemble, ligate_fragments, or fusion_pcr. An agent can tell what this 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the listed systems (Gateway BP/LR, Cre/loxP, integrase, homologous, CRISPR knock-in), so an agent can infer which mode applies to its scenario. However, it never states when to prefer this over overlapping siblings such as gibson_assemble or restriction_ligate, and offers no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recompute_trace_qualityA
Read-only
Inspect

Re-score a Sanger trace's own base calls from the signal, replacing the instrument's Phred values with ones measured from the peaks. Keeps the bases; only their quality changes. Reports the read's mean quality, its lowest-scoring base and the four trace parameters that base was scored from, which are the whole input to the quality table.

NameRequiredDescriptionDefault
tableNothe instrument/polymer calibration table to score against. The same signal scores differently under each, so a quality value is only interpretable with the table named. Defaults to ABI 3730 POP-7.3730pop7
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace to run on: a file name (`read_F.ab1`) or its project file id. Leave unset to use the trace tab on screen. A file id is project-specific, so a template ships this unset.

Output Schema

NameRequiredDescription
basesYeshow many bases the reading called
meanQualityYesthe mean Phred of the reading, on the calibration table it names
instrumentBasesYeshow many the FILE carries, so a gate can see a de-novo reading change the read's length

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the read-only, non-destructive, closed-world safety profile, so the bar is lower. The description adds real context the annotations do not: what is discarded (instrument Phred values), what is preserved (the bases), and what the result reports (mean quality, lowest-scoring base, and the four trace parameters behind that call). It does not state whether any recomputed values are persisted, which leaves one gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what the tool does and immediately followed by the scope boundary and the reported result. No filler, no repetition of the title or schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still frames the return values as a readable result set, and the schema fully documents the four inputs including the table-default (3730pop7). Nothing an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents table, document, _files and _subject in detail (including why the calibration table matters). The description adds no syntax or selection detail for any input parameter; its mention of 'the four trace parameters' refers to output values, not callable arguments. Baseline 3 is correct when the schema carries the whole burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (re-score) and resource (a Sanger trace's own base calls from the signal) and immediately bounds the operation: instrument Phred values are replaced by ones measured from peaks, while the bases themselves are kept. That 'keeps the bases; only their quality changes' clause cleanly separates it from re-calling siblings such as call_bases_from_trace and adopt_trace_calls without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the selecting condition clear: use this when a trace already has base calls and you want quality values recomputed from the signal rather than the sequence re-called. It does not explicitly name an alternative tool or an exclusion case, so it stops short of the 5 that would route the agent against named siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_compositionA
Read-only
Inspect

What the subject record is MADE OF: molecular weight under its own topology and strand count, GC and AT over the resolved bases, and the per-symbol census with the ambiguity codes broken out. The nucleic-acid counterpart of protein_properties, and the same derivation the editor's Properties panel, its inspector and the alignment inspector all draw (Biopython's mass model; ProtParam for a protein subject).

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
doubleStrandedNoweigh BOTH strands (a plasmid or any dsDNA record) rather than the one strand written in the file (an oligo, an RNA, an alignment row). The two answers differ by about a factor of two, which is why it is a parameter and not a guess. Defaults to true, or false when the record is RNA (U and no T), which is also weighed with RNA residue masses.

Output Schema

NameRequiredDescription
lengthYessymbols in the record, non-standard ones included
strandsYeshow many strands the mass was taken over: 2, 1, or 0 for a protein where the question does not arise
atPercentYespercent A+T over the same denominator. Null for a protein
gcPercentYespercent G+C over the RESOLVED A/C/G/T bases (`standardCount`), which is Biopython's gc_fraction default (ambiguous="remove") — not over the full length, so it complements `atPercent` exactly. Null for a protein
extinctionYesprotein subjects only: e280 under both cystine conventions; null otherwise
compositionYesone row per standard symbol: code, label, count, and its percent of `standardCount`
nonStandardYesthe symbols the alphabet does not define — Ns, IUPAC ambiguity codes, gaps — with counts and NO share, because they are excluded from the denominator
standardCountYeshow many of `length` are standard — the denominator every share here is over
molecularWeightYesmolecular weight — g/mol for a nucleic acid under `doubleStranded` and the record's own topology, Da for a protein
isoelectricPointYesprotein subjects only (ProtParam, Bjellqvist); null otherwise

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, non-destructive, non-open-world behavior, so the bar is lower. The description adds useful provenance beyond annotations: Biopython's mass model, ProtParam for a protein subject, and consistency with the editor's Properties/inspector derivations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the composition metrics and then provenance. The panel/inspector clause is dense, but it earns its place by explaining where the same derivation is used; there is no wasted restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, an output schema, and explicit read-only annotations, the description covers the computation's scope and derivation well enough for correct invocation. The main missing element is explicit routing guidance among adjacent analysis tools, but that is somewhat addressed by naming `protein_properties`.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents `_files`, `_subject`, and `doubleStranded`, including the defaulting behavior for RNA. The description adds conceptual context about topology and strand count, but does not provide parameter-level guidance beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific computed resource: what the subject record is made of, enumerating molecular weight under topology/strand count, GC/AT over resolved bases, and per-symbol census with ambiguity codes. It also identifies the sibling counterpart `protein_properties`, making clear this is the nucleic-acid composition tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only routing cue is that it is the 'nucleic-acid counterpart of `protein_properties`', which helps separate nucleic-acid from protein subjects. However, it does not address when to use this rather than adjacent siblings such as `gc_content` or `melting_temperature`, and gives 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.

record_experimentAInspect

Write what just happened into your lab notebook: a new entry, or more text appended to one you name. The body is markdown and its @plasmid / !action / &gel references are extracted as you write, so an entry made by a run is cross-linked exactly like one you typed — and carries the automated tag, so you can always tell which is which. Use it to end a pipeline with a record of itself instead of a reminder to write one.

NameRequiredDescriptionDefault
tagsNotags to file it under, beyond the `automated` tag every entry written here carries.
titleNothe entry title. A new entry needs one. On an append, giving a title RENAMES the experiment, so leave it out to keep the name it has.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
body_mdYesthe entry body, markdown. `@plasmid-name`, `!action-id` and `&gel-id` references in it are extracted into the entry's cross-reference lists, which is what makes a notebook searchable by construct.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
entry_idNoappend to this entry instead of creating one — the id `list_experiments` returns. A pipeline that runs twice should append to its own entry rather than leaving two.
collectionNofile it in this collection, creating the collection if it does not exist — the notebook's own grouping, the same one the panel lists.

Output Schema

NameRequiredDescription
tagsYesthe tags as stored, including `automated` — the engine caps and cleans these, so read them back rather than assuming
titleYesthe title it now carries
createdYestrue for a new entry, false when text was appended to an existing one
entry_idYesthe entry written — pass it back to append to this same experiment next time
bodyCharsYesthe stored body length. The engine caps a body at 1,000,000 bytes, so a long append can be shorter here than what was sent — read it rather than assuming the write was whole
crossRefsYesthe @plasmid / !action / &gel references the engine extracted from the body — empty lists are a real answer and mean the body named no construct, which is worth noticing in an entry about one
collectionYesthe collection it is filed in, or an empty string when it is filed in none
unresolvedYes`{ references, citations }`: every `@` / `!` / `&` reference in the stored body that names nothing in this workspace, as written, and every citation key that is not a DOI, PMID or PMCID. Empty lists mean every reference resolves; fix and append when they are not. Null when the write ran without the check (a blocking workflow run)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which only say it is a non-destructive write), the description discloses the important side effects: references in the body are auto-extracted into cross-reference lists, every entry written here carries an `automated` tag so provenance is distinguishable, and appends share the entry rather than creating duplicates. That is exactly the behavioral context an agent cannot infer from readOnlyHint/destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and the two modes, then the consequence (auto cross-linking, `automated` tag), then the motivating use case. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering returns, the description supplies the remaining agent-relevant facts: write semantics, append behavior, tagging, and reference extraction. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents body_md reference extraction, title-rename-on-append, and the `automated` tag in `tags`. The description's note about markdown bodies and @plasmid/!action/&gel extraction largely restates the schema, so it earns the baseline rather than more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'write ... into your lab notebook' — and immediately disambiguates the two modes (a new entry, or appended text to a named one). An agent can distinguish this from list_experiments or notebook_cross_refs 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear intended use case ('end a pipeline with a record of itself instead of a reminder to write one') and the append-not-duplicate rule appears in the schema. It stops short of naming siblings to prefer for reading or searching the notebook, so there is context but no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

relative_expressionA
Read-only
Inspect

Relative gene expression from a Ct table, by all THREE models the Analyze panel offers: delta-delta-Ct (normalised to a reference gene AND calibrated to a reference group), delta-Ct (calibrated to a reference group only), and the two-step standard-curve model, which fits each gene's own dilution series and converts Ct to amount before taking the ratio. Reproduces the pcr package's pcr_ddct/pcr_dct/pcr_curve, including its separate-tube and same-tube estimators, which differ in WHEN the subtraction happens and are not a display option. A significance test runs beside the model on request - Welch t-test, the equivalent linear model, the Wilcoxon rank-sum test with R's own exactness rule, or a design-matrix lm for designs the two-group form cannot express - and delta-delta-Ct's equal-efficiency assumption can be checked in the same run.

NameRequiredDescriptionDefault
tubeNo`separate_tube`: target and reference amplified in different wells, errors independent. `same_tube`: multiplexed in one well, subtracted per well before averaging. Advanced.separate_tube
modelNowhich model. `delta_delta_ct` and `relative_curve` need a reference gene, `delta_ct` does not; `relative_curve` additionally needs `standard_ct_table` and `amounts`, because it fits a real dilution series rather than assuming efficiency. Values: delta_delta_ct (Delta-delta-Ct (normalised + calibrated)), delta_ct (Delta-Ct (calibrated only)), relative_curve (Standard curve (fitted amounts)).delta_delta_ct
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
groupsYesthe group each sample belongs to, one per line, in the same order as the Ct rows (e.g. six lines of `control` then six of `treated`).
amountsNothe input amount of each dilution row, one per row of `standard_ct_table`, whitespace- or comma-separated. The fit is against log10 of these, so every value must be positive. Advanced.
lm_modeNohow `lm.design` normalises the target against the reference gene before fitting: `subtract` the reference Ct (the delta-Ct scale), or `divide` by it. Values: subtract (Subtract (ΔCt = target − reference)), divide (Divide (target ÷ reference)). Only applies when sig_test is lm.design. Advanced.subtract
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
ct_tableYesthe Ct table: a header row of gene names, then one row per sample. Tab- or comma-separated, the same table the Analyze tab takes.
sig_testNowhich significance test runs beside the model. `t.test` is Welch's two-sample test on the normalised values; `lm` is the equivalent linear model, which reports the same p with a confidence interval; `wilcox.test` is the rank-sum test, for plates too small or too skewed to assume normality; `lm.design` fits `lm(norm ~ model_matrix + 0)` for designs the two-group form cannot express, and is reported through `design` rather than the test table. Values: none (None), t.test (Welch t-test), lm (Linear model (two-group)), wilcox.test (Wilcoxon rank-sum), lm.design (Design-matrix linear model). Advanced.none
lm_formulaNothe design formula for `lm.design`, in R's own notation (`~ group`, `~ group + dose`, `~ group * run`). `group` is always available from `groups` with no paste at all. Only applies when sig_test is lm.design. Advanced.~ group
lm_variablesNoextra design variables for `lm.design`: a header row of variable names, then one row per sample in the Ct table's order. A column whose every value parses as a number is a covariate, otherwise a factor - the same distinction R makes. Leave empty to model on `group` alone. Only applies when sig_test is lm.design. Advanced.
wilcox_exactNowhich Wilcoxon null distribution. `auto` applies R's own rule (exact while both groups are under 50 and there are no ties); `exact` forces the exact distribution, which is costly on large groups; `normal` forces the approximation. Values: auto (Auto (exact if both groups < 50)), exact (Exact conditional), normal (Normal approximation). Only applies when sig_test is wilcox.test. Advanced.auto
lm_conf_levelNoconfidence level for the `lm.design` coefficient intervals. Only applies when sig_test is lm.design. Advanced.
reference_geneNothe gene expression is normalised to. Required for delta-delta-Ct and for the standard-curve model; ignored by delta-Ct, which normalises to a group only. Only applies when model is delta_delta_ct or relative_curve.
wilcox_correctNotail refinement for the Wilcoxon normal approximation: `none`, R's `continuity` correction, or 1-3 Edgeworth terms. Ignored when the exact distribution is used. Values: none (None), continuity (Continuity), 1 (Continuity + Edgeworth 1), 2 (Continuity + Edgeworth 2), 3 (Continuity + Edgeworth 3). Only applies when sig_test is wilcox.test. Advanced.continuity
reference_groupYesthe group everything is calibrated against: the untreated / time-zero / wild-type arm.
assess_efficiencyNorun `pcr_assess(method = 'efficiency')` beside delta-delta-Ct: delta-Ct against the reference gene regressed on log10 amount, per gene. This is how the model's equal-efficiency assumption is CHECKED rather than assumed - a slope far from zero says delta-delta-Ct is the wrong model for this plate. Needs `standard_ct_table` and `amounts`. Advanced.
standard_ct_tableNothe SERIAL-DILUTION Ct table the standard curve is fitted to - a second plate, not the sample one. Required by `relative_curve`, and by `assess_efficiency` on any model. Advanced.
wilcox_conf_levelNoconfidence level for the Wilcoxon location-shift interval. Only applies when sig_test is wilcox.test. Advanced.
wilcox_alternativeNothe Wilcoxon alternative hypothesis. Values: two.sided (Two-sided), less (Less (shift < 0)), greater (Greater (shift > 0)). Only applies when sig_test is wilcox.test. Advanced.two.sided

Output Schema

NameRequiredDescription
rowsYesone row per group x gene: the normalised and calibrated delta-Ct (or fitted amount ratio), the fold change and its bounds
testYesthe significance test beside the model - one row per gene, with the statistic, p value and interval - or null when none was asked for
countYeshow many rows the model produced
genesYesthe genes measured, reference gene excluded under delta-delta-Ct
modelYesthe model that produced them
trendYesthe per-gene standard curve (intercept, slope, R-squared) the `relative_curve` model consumed, or null
designYesthe design-matrix linear model: the formula, the columns it built, and per gene a coefficient table WITH the fit diagnostics. Null unless `sig_test` is `lm.design`
groupsYesthe groups, in the order the rows use
efficiencyYesthe equal-efficiency check: delta-Ct regressed on log10 amount per gene. A slope far from zero says delta-delta-Ct is the wrong model here. Null unless `assess_efficiency` ran
referenceGeneYesthe gene every target was normalised to under delta-delta-Ct; null for the models that use none
standardPointsYesthe dilution observations behind that curve, with fitted values and residuals - a standard curve is judged by whether a dilution sits off the line, not by R-squared

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds real behavioural context beyond that: that separate-tube vs same-tube estimators differ in WHEN subtraction happens (not a display option), that delta-delta-Ct's equal-efficiency assumption is checked rather than assumed, and that lm.design reports through `design`. It doesn't describe return format or error behavior, but that is largely carried by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph, front-loaded with the core purpose and models. Every sentence carries information, though the density (three models, two estimators, four tests, efficiency check) makes it heavy; it earns its length for a 20-parameter tool but is not maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 20 parameters, nested objects, an output schema, and rich annotations, the description covers the critical decision axes (which model, which significance test, when efficiency must be assessed). Return values are rightly deferred to the output schema. Coverage is strong, though the relationship to sibling expression tools is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds conceptual meaning beyond the enum listings — notably the distinction that separate_tube/same_tube differ in when subtraction happens, and how the standard-curve model fits a real dilution series rather than assuming efficiency. This clarifies the models' semantics without merely restating schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Relative gene expression from a Ct table') and immediately enumerates the three models it implements, naming the `pcr` package functions it reproduces. An agent can distinguish this from siblings like differential_expression or rank_reference_genes 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains within-tool model selection clearly (delta-delta-Ct and standard-curve need a reference gene, delta-Ct does not; the significance test runs 'on request'; efficiency can be checked 'in the same run'). It stops short of contrasting itself against sibling tools such as differential_expression, so it is clear context rather than explicit when/when-not/alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remember_lab_preferenceAInspect

Remember what this lab uses, so the PCR program, primer design and codon optimization start on it: the polymerase, the primer length and GC windows, and the expression host. Use it when the user says what they use ("we use Q5", "our primers are 20 to 24 nt"). Saved where the user reads and edits it, Settings · Lab; each panel still says when it is showing the lab's choice, and a project can still choose otherwise. Enzyme supplier order is saved in Enzyme Collections, not here.

NameRequiredDescriptionDefault
clearNopreferences to forget, so those panels start on their own defaults again.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
polymeraseNothe polymerase family the PCR program starts on, or `keep` to leave the saved one as it is. Values: keep (Keep as saved), taq (Taq), dbd (Phusion / Q5 (DNA-binding domain)).keep
primer_gc_maxNohighest primer GC, %.
primer_gc_minNolowest primer GC, %.
expression_hostNothe organism codon optimization targets: a scientific name or an NCBI taxonomy id.
primer_length_maxNolongest primer, nt.
primer_length_minNoshortest primer, nt.
polymerase_productNothe cataloged product within that family, or `generic` for the preset alone. Values: generic (Generic preset (no datasheet)), takara-taq (Takara Bio · TaKaRa Taq / EmeraldAmp GT), takara-ex-taq (Takara Bio · TaKaRa Ex Taq / EmeraldAmp MAX), takara-la-taq (Takara Bio · TaKaRa LA Taq), takara-ex-premier (Takara Bio · TaKaRa Ex Premier), primestar-gxl (Takara Bio · PrimeSTAR GXL DNA Polymerase), primestar-hs (Takara Bio · PrimeSTAR HS DNA Polymerase), primestar-max (Takara Bio · PrimeSTAR Max DNA Polymerase Ver.2), primestar-longseq (Takara Bio · PrimeSTAR LongSeq DNA Polymerase), cloneamp-hifi (Takara Bio · CloneAmp HiFi PCR Premix), speedstar-hs (Takara Bio · SpeedSTAR HS DNA Polymerase), terra-direct (Takara Bio · Terra PCR Direct Polymerase Mix), titanium-taq (Takara Bio · Titanium Taq DNA Polymerase), advantage-hd (Takara Bio · Advantage HD Polymerase Mix), qiagen-taq (QIAGEN · Taq DNA Polymerase), qiagen-hotstartaq (QIAGEN · HotStarTaq DNA Polymerase). Only applies when polymerase is taq or dbd.generic

Output Schema

NameRequiredDescription
changedYeswhich preferences this call set or cleared
readingYesthe saved preferences in one sentence, as the assistant reads them each turn
preferencesYesevery lab preference as saved after this call; null where none is set

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only tell the agent it is a non-read-only, non-destructive, non-open-world write. The description adds real context beyond that: where the value lands (Settings · Lab, user-visible and editable), that panels signal when the lab default is in effect, and that projects can still override. It omits any note that the same tool can erase preferences via the clear parameter, which is a minor disclosure gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then trigger, then persistence semantics, then exclusion — a sensible ordering with no filler. It runs a bit long across four clauses, and the Settings · Lab detail is slightly parenthetical, but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety profile, the remaining burden is scope and side effects, which the description handles well (persistence location, override behavior, sibling exclusion). The one unaddressed area is the clear/forget mode, which only the schema surfaces.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains every parameter, including the clear enum values and the polymerase 'keep' default. The description only groups them conceptually ('polymerase, the primer length and GC windows, and the expression host') without adding syntax or interaction rules, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Remember what this lab uses' and enumerates exactly which settings persist (polymerase, primer length and GC windows, expression host). It explicitly scopes itself away from the nearest sibling concern — enzyme supplier order — routing that to Enzyme Collections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger with verbatim user phrases ('we use Q5', 'our primers are 20 to 24 nt') and a hard exclusion ('Enzyme supplier order is saved in Enzyme Collections, not here'). An agent knows both when to call it and when not to.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_run_statusA
Read-only
Inspect

Read a research run file without running anything: whether its seal holds (an edited or truncated file is refused), every hypothesis's verdict and the rule its evidence was merged by, which hypotheses a resume would run (no evidence, and the last attempt failed or was deferred by a call's budget) and which are settled or canceled, and what resuming would do. Given the corpus, also reports every pinned input whose content changed under the same name, which a resume refuses.

NameRequiredDescriptionDefault
runYesthe run file run_discovery_programme or resume_research_run returned.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequencesNooptionally, the corpus as it is now, to check against the run's pinned inputs.

Output Schema

NameRequiredDescription
driftYespinned inputs whose content changed, when a corpus was given; null when none was
statusYesid, hypothesis counts by verdict, pending and settled hypotheses, and the next action
pendingYeshypotheses a resume would run
decisionsYesevery hypothesis's verdict, merged e-value, tests and merge rule

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the read-only safety profile, but the description adds substantial non-obvious behavior beyond them: seal verification that refuses edited/truncated files, the merge rule per hypothesis, resume-eligibility rules (no evidence and last attempt failed or deferred by budget), and pinned-input name collision refusal. These are genuine operational facts an agent cannot infer from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loads the core action before enumerating behaviors, and each clause carries distinct information. It is long and somewhat run-on, using multiple parentheticals, but little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure needn't be described, and the description nevertheless covers the safety model, resume logic, and corpus-comparison semantics. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning for the optional sequences param by explaining it is the current corpus checked against pinned inputs and that a changed pinned input causes a resume refusal. The required run param's origin is also reinforced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource combination — read a research run file — and immediately scopes it with 'without running anything', distinguishing it from siblings like run_discovery_programme and resume_research_run. An agent can identify the operation 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without running anything' plus 'what resuming would do' clearly places this as the inspection counterpart to resume_research_run, and 'Given the corpus' establishes the optional-corpus condition. It stops short of naming the alternative tool explicitly or stating outright exclusions, so it is strong context rather than 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.

resolve_gene_setsA
Read-only
Inspect

Gene sets for an organism, fetched from the authority at run time instead of a bundled list: Gene Ontology terms from the GO Consortium's own annotation file for the organism (each term's direct annotations, NOT annotations dropped, term names from QuickGO), or Reactome pathways from Reactome's AnalysisService (each pathway's members among the genes you submit, in the species Reactome resolves). Returns GMT text for gene_set_overrepresentation, gene_set_enrichment and gene_set_camera, with the source, release and retrieval date.

NameRequiredDescriptionDefault
genesNoreactome: the genes to map, one per line (a 'gene value' line keeps its first field), e.g. a DE run's tested genes, in an ID system Reactome reads (Ensembl, UniProt, NCBI Gene, a model organism's own). Only applies when authority is reactome.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
organismYesthe organism: an NCBI taxon ID (7227) or a name (Drosophila melanogaster, human); GO resolves it through NCBI Taxonomy, Reactome resolves it itself.
authorityNogo: every GO term with a direct annotation in the organism. reactome: Reactome's pathways, restricted to the genes in `genes`. Values: go (GO · GO Consortium), reactome (Reactome · AnalysisService).go

Output Schema

NameRequiredDescription
geneSetsYesthe sets as GMT text: ID, name, member genes
provenanceYesthe authority, the organism it resolved, its release, the retrieval date, every URL read and what the sets are restricted to

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds real behavioral context beyond that: retrieval happens at run time from an external authority, GO sets use direct annotations only ('NOT annotations dropped'), Reactome sets are restricted to the submitted genes and to the species Reactome resolves, and the output carries source, release and retrieval date. It doesn't mention failure modes or rate limits, but the disclosure is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then the two authority branches, then the return value. It is one dense sentence with heavy parentheticals, and the 'NOT annotations dropped' aside is a little cryptic, but nearly every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail needn't be exhaustive, and the description still summarizes the GMT output with provenance. The nested _files/_subject project plumbing is left entirely to the schema, but the core behavior of the tool itself is adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents organism resolution, the reactome-only scope of `genes`, and the authority enum. The description largely restates those semantics (organism resolution path, genes applicability) rather than adding syntax or format guidance, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Gene sets for an organism, fetched from the authority at run time') and immediately names the two concrete sources (GO Consortium annotation file, Reactome AnalysisService). It also names the downstream consumers (gene_set_overrepresentation, gene_set_enrichment, gene_set_camera), which lets an agent place the tool in the workflow rather than guessing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

By stating that the output is GMT text for the three gene_set_* enrichment tools, it makes the when-to-use context explicit: this is the prerequisite fetch step. It does not, however, state any exclusions or say when a bundled-list or lookup_gene/ontology path would be preferable instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_trace_file_callsAInspect

Put an open Sanger read back on the base calls its FILE carries, undoing an adopted re-call. The same carry runs in the other direction, so the trim window, the hand-corrected calls and the annotations come back with it rather than being left on indices the file does not have. Not the same as clearing the read's edits, which also discards the trim and the manual calls.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
basesYeshow many bases the file's own reading carries
sequenceYesthe read the document now carries

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations establish the operation is a non-read-only, non-destructive, closed-world mutation. The description adds meaningful behavior beyond that: it discloses that the same carry runs in both directions and that the trim window, hand-corrected calls and annotations are restored rather than orphaned on indices the file does not have. This is substantive state-change detail the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and followed by the semantic consequence and the sibling distinction. Fairly dense and slightly convoluted in the middle clause, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and parameters are fully covered by the schema. The description supplies the mutation semantics and the inverse-relationship context an agent needs. Only the unnamed sibling reference keeps it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both _files and _subject, with nested field meanings already documented (record_index picks one record of several, etc.). The description adds no parameter syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('put an open Sanger read back on the base calls its FILE carries') and immediately names the action it reverses ('undoing an adopted re-call'). It further distinguishes itself from a related-but-different operation ('clearing the read's edits'), so an agent can tell it apart from siblings 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use ('undoing an adopted re-call') and warns against confusing it with clearing edits, which is a form of when-not guidance. It does not name the exact sibling tool (adopt_trace_calls) that produces the state being undone, leaving a small inference gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restriction_ligateAInspect

Cut and ligate in ONE POT (pydna restriction_ligation_assembly): every input is digested by the same enzymes inside the reaction and the pieces are joined as they appear, so a junction that re-forms a recognition site can be cut again. This is the reaction Golden Gate is a special case of, and it is a different chemistry from ligate_fragments, which digests first and then ligates whatever the digest left. Reports how many sites of the FIRST enzyme each product still carries — a finished construct has none.

NameRequiredDescriptionDefault
bluntNoallow blunt-end joins as well as sticky.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesNothe enzymes in the pot — used for every input. Left unset, the run uses your active enzyme collection.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
fragmentsNothe molecules to put in the pot — wire upstream `record` outputs here, or name library documents.
end_originsNowhat MADE each input's ends, positionally. In a one-pot reaction almost every end is cut INSIDE the tube and is therefore freshly 5'-phosphorylated, so this changes the answer only for an input's own original terminus — reachable only when it arrives already sticky, which today means an annealed oligo adapter. Advanced.
circular_onlyNoreport only circular products.
end_treatmentsNothe phosphatase or kinase applied to each input, positionally. Same reach as `end_origins`: an original sticky terminus only. Advanced.
include_subjectNoalso put the node's subject in the pot.
sort_by_recognition_sitesNosort products by how many sites of the FIRST enzyme they still carry, fewest first — this floats the finished construct to the top.

Output Schema

NameRequiredDescription
layoutYeswhere each piece and join sits ON the product: the spans the map draws
recordYesthe first product, as a record — with the sort on, the one carrying the fewest remaining sites
productsYesevery product
junctionsYesthe junctions formed, with the overhang each was made by — wire into score_overhang_fidelity
productCountYesnumber of products (>1 = the pieces go together more than one way)
nickedJunctionsYesindices of junctions left NICKED by a missing 5'-phosphate on one strand — the product still transforms and is repaired in vivo
recognitionSitesYessites of the FIRST enzyme still in the first product. 0 = finished: the reaction cannot re-cut it
partiallyDigestedYesinputs whose products were DROPPED because they would have needed a partial digest — a product that needs the enzyme to skip a site it must have cut is not a bench outcome

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly=false, destructive=false, closed world), so the description adds real mechanism context: re-formed recognition sites get re-cut, and it reports residual sites of the FIRST enzyme per product. It does not discuss failure modes, resource limits, or performance, so 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the core purpose and followed by differentiation and result interpretation. No filler, though the parenthetical and clause stacking make it slightly heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be explained, and the description still clarifies how to read results. Annotations cover safety, and 10 optional params with 100% schema coverage mean little is missing; only explicit usage preconditions would push this higher.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents blunt, enzymes, fragments, end_origins, end_treatments, etc. in detail. The description adds cross-parameter insight about the 'FIRST enzyme' relevant to sort_by_recognition_sites, but largely restates what the structured fields provide; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and resource ('cut and ligate in ONE POT', pydna restriction_ligation_assembly) and explicitly positions it against the sibling ligate_fragments. An agent can distinguish the two chemistries 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (ligate_fragments) and the distinction that selects between them ('digests first and then ligates whatever the digest left' vs simultaneous digest-and-join). It also frames Golden Gate as a special case, giving useful context. It lacks an explicit 'use this when...' clause or exclusions, so it falls 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.

resume_research_runA
Read-only
Inspect

Continue a research run from its file after an interruption or a failed test: the seal is checked, every pinned input the corpus still holds must have the content it had (a changed file is refused by name), and only the hypotheses with no evidence whose last attempt failed or was deferred are run, each with the settings it was registered with. Answered, settled and canceled hypotheses are never run again, so a resumed run reaches the verdicts an uninterrupted one would. With budget_seconds, a long run continues in slices: call again with the returned file until nothing is pending. Returns the updated run file with the same outputs as run_discovery_programme.

NameRequiredDescriptionDefault
runYesthe run file to continue.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequencesNothe corpus the run was registered over: library document or file names, or wired records.
budget_secondsNoseconds this call may spend running tests: whole tests run until the budget is spent and the rest are deferred, so a long program returns before a client's timeout and resume_research_run continues it. A test is never cut short and at least one runs per call. Unset: every test runs in this call. In s. Advanced.

Output Schema

NameRequiredDescription
runYesthe whole program as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue
reportYesthe resume as text lines: what ran, what was refused, the verdicts
resumedYesthe hypotheses this call ran
decisionsYesevery hypothesis: verdict, merged e-value, tests and merge rule

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already covering the safety profile (readOnlyHint, destructiveHint=false, openWorldHint=false), the description still adds substantial behavior: the seal is checked, every pinned input must still match content and a changed file is refused by name, only unevidenced hypotheses whose last attempt failed or was deferred are re-run with their registered settings, and a test is never cut short. This is exactly the kind of refusal/idempotence disclosure the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, and every clause carries load-bearing information (seal check, refusal semantics, skip rules, slicing protocol). It is a dense single paragraph of multi-clause sentences rather than scannable structure, which costs a point but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-schema, state-threading tool with an output schema present, the description supplies everything needed: what it refuses, what it re-runs, what it never re-runs, how to iterate under budget, and that returns match run_discovery_programme. Return-value detail is correctly delegated to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, and the schema already explains budget_seconds deferral. The description nonetheless adds parameter-level workflow meaning: the 'run' file is threaded through calls ('call again with the returned file'), and budget_seconds is framed as slicing a long run rather than as a per-test cutoff.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Continue') plus resource ('a research run from its file') and the exact triggering condition ('after an interruption or a failed test'). It also distinguishes itself from run_discovery_programme by stating it returns 'the same outputs as run_discovery_programme', so an agent can place it in the run lifecycle without opening a sibling schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use (interrupted or failed run), explicit what-is-skipped ('answered, settled and canceled hypotheses are never run again'), and the alternative pattern for long jobs ('with budget_seconds ... call again with the returned file until nothing is pending'). The relation to run_discovery_programme is named, so routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reverse_complementAInspect

Reverse-complement the subject sequence. Emits a NEW record, so downstream nodes (map, digest, gel, ORF) run on the revcomp rather than the original.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
recordYesthe reverse-complemented record
sequenceYesreverse complement 5'→3'

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only tell the agent this is non-readOnly and non-destructive; the description adds the important behavioral fact that a NEW record is emitted and that downstream nodes consume the revcomp rather than the original. It does not cover failure modes (empty subject, invalid bases) or whether the new record is persisted in the project.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the core action is front-loaded and the second sentence earns its place by explaining the consequence for downstream nodes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple sequence transform with a full output schema and 100% parameter coverage, the description covers what the tool does and its effect on the workflow graph. Remaining gaps (persistence of the new record, edge-case handling) are minor and partly covered by the output schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so _files and _subject are already fully documented in the schema. The description's phrase 'the subject sequence' loosely echoes the _subject parameter but adds no format, ordering, or multi-record (record_index) guidance beyond what the schema supplies. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Reverse-complement the subject sequence') and clarifies the output shape: a NEW record rather than an in-place edit. It does not name sibling tools like translate_sequence or mask_sequence, so an agent must infer the boundary from context, but the operation 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied via the downstream-node list (map, digest, gel, ORF), which tells the agent this is a preparatory step for those analyses. However, there is no explicit when-to-use/when-not, no named alternative (e.g. translate_sequence, mask_sequence), and no prerequisites or ordering constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rps_blast_cddA
Read-only
Inspect

RPS-BLAST a protein against NCBI's Conserved Domain Database (CDD) or one of its member collections (Pfam, SMART, COG, KOG, PRK, TIGR, NCBI-curated), through NCBI Batch CD-Search. Returns every domain hit with its hit type (specific, non-specific, superfamily, multi-domain), residue span, E-value, bit score, CDD accession, superfamily cluster and whether the alignment stops short of either end of the model. This is the rpsblast program. Give protein, or give dna to send its six reading frames as six proteins (per-frame CD-Search: each E-value is for its own frame, which is not rpstblastn; rpstblastn_smart runs rpstblastn itself on this machine). The query leaves the machine for NCBI.

NameRequiredDescriptionDefault
dbNothe PSSM collection, as the live Batch CD-Search form names it (cdd, cdd_ncbi, oasis_pfam, oasis_smart …); live mode only. Only applies when smode is live.cdd
dnaNoinstead of `protein`: DNA whose six reading frames are sent as six proteins, labeled frame +1 … frame -3; each hit names its frame in queryLabel.
dmodeNowhich hits come back: concise (the best hit per region), standard (the best per source database per region) or full (every hit). Values: rep (concise), std (standard), full (full).std
smodeNoNCBI's search mode: automatic uses precomputed results where they exist, precomputed never runs a search, live always runs one. Only live honours db, evalue and maxhit. Values: auto (automatic), prec (precomputed only), live (live search).auto
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
evalueNoE-value cutoff; live mode only (automatic and precomputed apply 0.01). Only applies when smode is live.
filterNomask low-complexity regions of the query before searching.
maxhitNomost hits per protein; live mode only (automatic and precomputed apply 500). Only applies when smode is live.
proteinNothe protein sequence, one-letter codes; wire it from translate_sequence or read it off a CDS.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
compbasedadjNo0 no composition-based statistics · 1 composition-based statistics · 2 composition matrix adjust · 3 forced full matrix adjust.

Output Schema

NameRequiredDescription
hitsYesevery domain hit: queryLabel (the frame, for a `dna` query), hitType, pssmId, from, to (1-based residues), evalue, bitscore, accession, shortName, incompleteN, incompleteC, superfamily, definition
cdsidYesNCBI's search id, re-openable in CD-Search's own viewer for two days
countYesdomain hits returned

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/no-destruct, and the description reinforces egress with 'the query leaves the machine for NCBI' and clarifies mode-dependent behaviour (only live honours db/evalue/maxhit). It stops short of noting auth needs, rate limits, or latency/queuing for the remote service.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage constraints, then return detail; every sentence is information-dense with no filler. The middle enumeration of return fields is somewhat redundant given an output schema exists, costing a little tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, multi-mode tool with nested objects, the description covers the critical decisions (input type, mode semantics, network egress, sibling disambiguation). Since an output schema exists, the return-value recital is a bonus rather than a gap, though permission/limit context is still absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents db, dmode, smode, evalue, maxhit, etc. The prose adds framing (protein or dna, mutual exclusivity, per-frame labeling) but no syntax or semantics beyond what the schema already carries; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (RPS-BLAST a protein against NCBI CDD / member collections via Batch CD-Search) and even identifies the underlying program ('This is the rpsblast program'). It actively distinguishes itself from siblings by naming rpstblastn_smart and clarifying 'which is not rpstblastn'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the protein-vs-dna choice and what the dna path does (six frames, per-frame E-values), and explicitly routes the agent away from rpstblastn_smart. It does not, however, compare against the closely related rps_blast_smart sibling or state when this local/remote split matters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rps_blast_smartA
Read-only
Inspect

rpsblast, run on this machine: find conserved domains in a protein against NCBI's SMART domain models (1,011 PSSMs from CDD). NCBI BLAST+ 2.17.0's algorithms, checked against the rpsblast program on every bundled protein. Nothing is sent anywhere; for all of CDD use rps_blast_cdd, which goes to NCBI.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
evalueNoreport alignments with E at most this (`-evalue`); BLAST's default is 10.
sourceNowhere the SMART database is read from: 'bundled' (a byte-identical copy of NCBI's file) or 'ncbi' (NCBI's FTP site, now). Advanced.bundled
proteinYesthe protein, one-letter codes; wire it from translate_sequence or read it off a CDS.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_target_seqsNomost domain models reported (`-max_target_seqs`).

Output Schema

NameRequiredDescription
countYesdomain models hit
domainsYesevery SMART domain hit, best first: accession, shortName, title, profileLength and each HSP's residue coordinates, model coordinates, score, bits, E-value, identities, positives, gaps and aligned strings

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false; the description reinforces this with 'Nothing is sent anywhere' and explains why the run is trustworthy (pinned BLAST+ 2.17.0, cross-checked against the real rpsblast program on every bundled protein). It does not discuss runtime, memory, or result size, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action ('rpsblast, run on this machine: find conserved domains...') before the caveats and the sibling routing. The sentence about version and bundled-protein validation is somewhat promotional, but it is short and each clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations, a full schema, and an output schema, the description only needs to cover scope and routing, which it does: algorithm identity, database size, local execution, and the remote alternative. Minor omissions such as expected runtime for a 1,011-model search are not needed to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (including the nested _subject) are already documented with defaults and enums. The description adds only indirect context, the database size (1,011 PSSMs) and that the source can be bundled or NCBI, without clarifying parameter syntax or interactions beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the exact algorithm (rpsblast) and the exact resource (NCBI SMART domain models, 1,011 PSSMs from CDD), plus the operation ('find conserved domains in a protein'). It also distinguishes itself from the siblings rps_blast_cdd and rpstblastn_smart by naming the CDD-wide alternative, so an agent can place it 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the selection rule: use this for the SMART subset, and 'for all of CDD use rps_blast_cdd, which goes to NCBI.' The local-vs-remote condition is stated as the deciding factor, which is exactly what an agent needs when choosing among the three domain-search siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpstblastn_smartA
Read-only
Inspect

rpstblastn, run on this machine: find conserved domains in DNA by searching all six reading frames against NCBI's SMART domain models (1,011 PSSMs from CDD). Leave sequence empty to search the open record. NCBI BLAST+ 2.17.0's algorithms, checked against the rpstblastn program on every bundled GenBank record. Nothing is sent anywhere; for all of CDD use rps_blast_cdd on a translated protein.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
evalueNoreport alignments with E at most this (`-evalue`); BLAST's default is 10.
sourceNowhere the SMART database is read from: 'bundled' (a byte-identical copy of NCBI's file) or 'ncbi' (NCBI's FTP site, now). Advanced.bundled
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe DNA to search, 5′→3′; leave empty to search the open record. Both strands are searched.
genetic_codeNoNCBI genetic code used to translate the six frames (`-query_gencode`).
max_target_seqsNomost domain models reported (`-max_target_seqs`).
comp_based_statsNocomposition-based statistics: 1 on (the default, Schäffer et al. 2001), 0 off.

Output Schema

NameRequiredDescription
countYesdomain models hit
domainsYesevery SMART domain hit, best first: accession, shortName, title, profileLength and each HSP's nucleotide coordinates (1-based, to < from on the minus strand) and frame, model coordinates, score, bits, E-value, identities, positives, gaps and aligned strings

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds real context beyond them: local execution ('run on this machine'), no data egress ('Nothing is sent anywhere'), a pinned engine version (BLAST+ 2.17.0), and validation against bundled GenBank records. It stops short of describing runtime cost or result-volume behavior for a 500-target search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and scope, then usage and routing. Mostly dense and useful, though the provenance clause ('checked against the rpstblastn program on every bundled GenBank record') is validation boilerplate that does not help an agent invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the description covers scope, database, execution locality, and the alternative tool. For a zero-required-parameter, all-defaults search tool it is essentially complete, with only runtime/cost expectations left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter (evalue, source, genetic_code, max_target_seqs, comp_based_stats, _subject, sequence). The description only restates the empty-`sequence` behavior already present in the schema, adding no format or syntax detail beyond it. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('find conserved domains in DNA'), the exact method ('searching all six reading frames'), and the database ('NCBI's SMART domain models, 1,011 PSSMs from CDD'). It also distinguishes itself from the sibling rps_blast_cdd, which covers all of CDD on a translated protein, so an agent can route correctly 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage rule ('Leave `sequence` empty to search the open record') and names an alternative with its selecting condition ('for all of CDD use rps_blast_cdd on a translated protein'). It does not, however, address the closely-named sibling rps_blast_smart (protein vs. six-frame nucleotide input), which is the subtlest routing decision here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_discovery_programmeA
Read-only
Inspect

Run a discovery program end to end under pre-registration: every hypothesis names its test (discover_site_avoidance: a site, optionally a record, and its null; discover_codon_outliers: a gene and its genetic code; validate_gene_trait: a human gene, the trait's own gene or tissues, and GWAS Catalog categories; discover_flag_rates: a cryptic-element flag, optionally a record, against k-let shuffles; discover_tree_incongruence: a locus of a multi-locus alignment, by the ILD test; discover_gene_tree_discordance: a gene alignment against a species tree, by the SH test; discover_reference_stability: a candidate reference gene against its GTEx abundance peers; discover_annotation_contradictions: a UniProt signal peptide or transmembrane segment against the experimentally confirmed ones; discover_reference_concordance: a Cq table whose conditions should rank its reference genes alike; differential_expression: a gene of a DESeq2 fit, up or down in the contrast; gene_set_overrepresentation: a gene set holding more of a gene list than chance; gene_set_enrichment: a gene set toward the top or bottom of a ranked list by GSEA) and direction, and all are registered in a hypothesis ledger before any test runs. Each registered test then runs once over the corpus, every answering result is attached as a κ-calibrated e-value (evidence from another test, a changed parameter or the same data twice is refused and reported), and e-BH decides over all hypotheses, those without evidence included. Returns the verdicts, the whole ledger as a file that imports into Discovery Expert, every run's input, the refusals, and the literature query each supported hypothesis needs before it may be called new. Pass a previous ledger with posterior beliefs to get the follow-up order by Bayesian surprise, which ranks what to test next and never changes a verdict. Also returns the whole program as a sealed run file (every corpus input pinned by SHA-256, the last attempt at each hypothesis); pass it back as run to add hypotheses and retry the ones whose test failed, or to research_run_status and resume_research_run. Evidence that read one source (one table, or one sequence under two names) is averaged, not multiplied, and each verdict names the rule.

NameRequiredDescriptionDefault
runNoa run file from an earlier call, to continue it: its seal and its pinned inputs are checked, hypotheses whose test failed or was deferred are retried, new ones are added, and nothing answered is run again.
alphaNoe-BH level the verdicts are decided at, across every hypothesis in the ledger.
kappaNoκ of the p-to-e calibrator e = κ·p^(κ−1); fixed for a ledger once it holds evidence. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
ledgerNoa ledger file from an earlier run, to continue: its hypotheses keep their evidence and new ones are added beside them.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
organismNothe organism the corpus is from, for the literature query each supported hypothesis needs. Advanced.
sequencesNothe corpus every registered test runs over: library document or file names, or wired records.
hypothesesNoeach {statement, test, params, direction, prior_belief?}. test: discover_site_avoidance (params site, record?, null_model, shuffle_k/shuffles/seed under the shuffle null; direction less, greater or two-sided) or discover_codon_outliers (params gene as its library name, genetic_code, alt_init?, min_codons?; direction two-sided) or validate_gene_trait (params gene as its HGNC symbol, expression_test coexpression with trait_genes or tissue with tissues, categories as GWAS Catalog parent categories, alpha?; direction greater; needs no corpus) or discover_flag_rates (params flag as one of sigma70-strongest, splice-donor, splice-acceptor, homopolymer, tandem-repeat, long-repeat, inverted-repeat, record?, shuffle_k/shuffles/seed; direction greater, meaning beyond chance in the flag's own tail) or discover_tree_incongruence (params locus as its alignment file's name, permutations/seed; direction greater; the corpus is one aligned FASTA per locus) or discover_gene_tree_discordance (params gene as its alignment file's name, species_tree in Newick, replicates/sh_form/gamma_categories/seed; direction greater, meaning the gene fits another tree better; the corpus is one aligned FASTA per gene) or discover_reference_stability (params gene as its HGNC symbol, tissues?, neighbours?, pseudocount?; direction greater for more variable than its abundance peers, less for steadier, or two-sided; needs no corpus) or discover_annotation_contradictions (params annotation as a UniProt accession, or accession:start-end where the protein has several, feature signal or transmembrane, predictor for signal, decoding for transmembrane; direction less, meaning it scores below the experimentally confirmed features; needs no corpus) or discover_reference_concordance (params cq_table as the long-format Target,Sample,Group,Cq table itself, permutations/seed; direction greater, meaning the conditions rank the genes more alike than independent orders; needs no corpus) or differential_expression (params gene as its count-table ID, symbol? as papers name it for the literature query, counts and samples as the tables themselves, and design/reference/test/reduced/contrast/name/fitType/sfType/lfcThreshold/altHypothesis/cooksFilter/cooksCutoff/minReplicatesForReplace as the tool takes them; direction greater for higher in the contrast's numerator, less for lower, or two-sided; one-sided needs the Wald test at lfcThreshold 0; needs no corpus) or gene_set_overrepresentation (params set as its GMT ID, genes, geneSets as GMT text, universe?, forceUniverse?, minGSSize?, maxGSSize?; direction greater; needs no corpus) or gene_set_enrichment (params set as its GMT ID, ranked as 'gene statistic' lines, geneSets as GMT text, minGSSize/maxGSSize/exponent/scoreType/eps/sampleSize/nPermSimple/seed; direction greater for toward the top of the list, less for the bottom, or two-sided; needs no corpus). prior_belief: the proposer's belief before any result, one sample or a list of them (true, false, definitely true, maybe true, uncertain, maybe false, definitely false, cannot comment).
budget_secondsNoseconds this call may spend running tests: whole tests run until the budget is spent and the rest are deferred, so a long program returns before a client's timeout and resume_research_run continues it. A test is never cut short and at least one runs per call. Unset: every test runs in this call. In s. Advanced.
posterior_beliefsNoeach {id, samples}: the proposer's belief in a hypothesis after reading its evidence. With prior beliefs these give the follow-up order by Bayesian surprise.

Output Schema

NameRequiredDescription
runYesthe whole program as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue
ledgerYesthe whole ledger as a jane.discovery-ledger file, every hypothesis and its evidence with traces
reportYesthe program as text lines: registrations, runs, refusals, verdicts, literature queries
resultYesthe full result
followUpYeshypotheses with prior and posterior beliefs, most surprising first: what to test next, never a verdict
decisionsYesevery hypothesis: verdict (supported, not-supported, no-evidence), product e-value and tests
supportedCountYeshow many hypotheses e-BH supports

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only and non-destructive annotations, the description discloses substantial behavior: hypotheses are registered before tests run, each registered test runs once, duplicate or changed-evidence attempts are refused, e-values are κ-calibrated, e-BH decides over all hypotheses, and supported hypotheses require a literature query before being called new. It also explains run-file sealing with SHA-256-pinned inputs, retry behavior, and how evidence from the same source is averaged rather than multiplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loaded with the core purpose, and its length is justified by the many supported test types and continuation modes. The structure is dense and relies on long parenthetical enumeration, but it remains logically ordered from purpose to execution, returns, continuation, and evidence rules. Some tightening and clearer paragraph structure would improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, 11 parameters, nested schemas, annotations, and an output schema, the description is complete enough for correct invocation. It covers the programme semantics, test-specific hypothesis requirements, continuation behavior, budget/deferral behavior, and the nature of returned artifacts. Nothing critical an agent needs to call this correctly appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is already 100%, the description adds meaningful semantics beyond the schema by explaining the hypothesis object structure and test-specific parameters for each discover_* and analysis type. It also clarifies how `run`, `ledger`, `posterior_beliefs`, `budget_seconds`, `sequences`, and `organism` affect orchestration and continuation. This materially helps an agent construct valid nested hypotheses rather than relying on the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: run a discovery programme end to end under pre-registration. It specifically distinguishes this orchestrator from sibling single-test tools by explaining that hypotheses name their tests, are registered in a ledger, and are judged together by e-BH. An agent can tell this is the multi-hypothesis programme runner, not one of the individual discover_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is clear: this tool is for running a pre-registered discovery programme over a corpus, with ledger and optional run-file continuation. It explicitly names alternatives for continuation, research_run_status and resume_research_run, and explains when to pass a previous ledger for Bayesian-surprise follow-up ordering. It does not explicitly state when not to use this versus calling individual test tools, but the multi-hypothesis/e-BH framing implies that distinction well.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_gel_laneB
Read-only
Inspect

Resolve a gel lane (ladder / plasmid / digest / pcr) into [bp, form] bands for the open plasmid.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
detailNofor a ladder: its name; for a digest: comma-separated enzymes. Unused for plasmid/pcr lanes. Only applies when source is ladder or digest.
sourceYeswhat this lane holds. Values: ladder (DNA ladder), plasmid (Uncut plasmid), digest (Restriction digest), pcr (PCR product).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
product_bpNofor a pcr lane: the product length, e.g. the length of the record `pcr_amplify` emits. Required for a pcr lane. In bp. Only applies when source is pcr.

Output Schema

NameRequiredDescription
bandsYes[bp, form] gel bands

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds domain scope ('for the open plasmid' and the lane types), but it does not disclose side effects, authentication needs, rate limits, or any further behavioral trait beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that states the action, the input domain, and the output form without any filler. Every word contributes to identifying the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and schema coverage is 100%, the description need not explain return values or parameter details. Annotations cover safety. The remaining gap is sibling differentiation, but the combination of description, schema, and annotations is sufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents source, detail, product_bp, _subject, and _files, including the conditional rules for detail and product_bp. The description only restates the source values that are already present in the enum description and adds no extra parameter syntax or conditional meaning. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Resolve', and names the resource, 'gel lane', plus the output shape, '[bp, form] bands'. It enumerates the lane types (ladder / plasmid / digest / pcr) so the agent can tell what inputs are accepted, but does not explicitly differentiate this tool from sibling tools such as run_gel_plate or draw_gel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no when-not-to-use guidance, and no named alternatives. The phrase 'for the open plasmid' implies a context, but it does not tell the agent how to choose this lane-level tool over run_gel_plate or draw_gel.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_gel_plateA
Read-only
Inspect

Run a multi-lane virtual agarose gel and return its READING, not just its bands: how many lanes carrying how many bands over what range, positioned by which ladder, plus only the cautions this plate earned — a lane running off the top or bottom of the reference ladder entirely (no mark to interpolate against, so the position is the calibration curve extrapolated), a band inside the ladder but outside the resolving window of the agarose percentage cast, two fragments co-migrating as one drawn band, a DNA form the chosen law cannot move, an empty lane, and a refused calibration. Wire one run_gel_lane per lane into lanes. The migration model is @ports/gel, the same one the Virtual Gel Bench panel draws.

NameRequiredDescriptionDefault
formNothe DNA topology a lane runs at when its bands do not carry one. Only moves a band under a concentration law: ladder-calibrated migration reads every band off the ladder's own curve, and the reading says so rather than leaving the setting silently inert. Advanced.linear
lanesYesthe lanes, in edge order — each a `[bp, form]` band list, which is exactly what `run_gel_lane` emits. A bare list of fragment lengths is also accepted and runs at the plate `form`. Several wires land here.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
ladderNothe reference ladder drawn beside the samples, and what "off the scale" is measured against. Values: generuler_1kb_plus (GeneRuler 1 kb Plus (75–20,000)), hi_lo (Hi-Lo DNA Marker (50–10,000)), generuler_1kb (GeneRuler 1 kb (250–10,000)), generuler_100bp (GeneRuler 100 bp (100–3,000)), generuler_100bp_plus (GeneRuler 100 bp Plus (100–3,000)), thermo_1kb_plus (Thermo 1 Kb Plus (100–15,000)), neb_1kb (NEB 1 kb (500–10,000)), neb_100bp (NEB 100 bp (100–1,517)), lambda_hindiii (Lambda DNA / HindIII (125–23,130)), penn_state (PennState (500–10,000)).generuler_1kb_plus
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
lane_namesNoa name per lane, in the same order. Unnamed lanes become `Lane 1`, `Lane 2`, … — the reading names the lane every caution is about, so a plate of unnamed lanes still says which one is off scale.
render_modeNohow the plate would be drawn. Echoed into the derivation chain because a raster merges what bands separate, so the reading is about a different picture. Advanced.bands
mobility_modelNowhich empirical agarose-% mobility law — helling-goodman-boyer (Helling–Goodman–Boyer (default)) · rill-van-winkle (Rill/Van Winkle). Values: helling-goodman-boyer (Helling–Goodman–Boyer (default)), rill-van-winkle (Rill/Van Winkle). Only applies when agarose_percent is set. Advanced.helling-goodman-boyer
agarose_percentNothe casting percentage, which activates a concentration law and a resolving window. LEAVE UNSET for the bench's own default: ladder-calibrated migration, interpolated on the ladder's measured curve with no concentration term. In %.

Output Schema

NameRequiredDescription
bandsYesevery placed band: lane, length in bp, Rf and migration on the shared coordinate system, and whether this gel can measure it
cautionsYesonly the cautions this plate earned, each carrying the measurement that produced it and naming the lane it is about. Empty when every band is measurable
conclusionYesthe one-sentence reading, generated from this run: lanes, bands, the size range they span, and the ladder that positioned them
derivationYesthe machinery, one row per fact: what placed the lanes, the ladder that calibrated them and whether its curve is its own or borrowed, the resolving window, each lane`s DNA form, and how the plate is drawn
calibratedByYesthe ladder whose measured curve positioned every lane — which is NOT always the ladder drawn: 2 of the 10 built-ins carry (bp, Rf) points, and a gel showing one of the other 8 is positioned on the default curve
unmeasurableYesper lane, the two failures kept apart because different actions fix them: `offScale` (outside the reference ladder entirely — read it off the table) and `outOfWindow` (inside the ladder, outside this percentage`s resolving range — cast a different gel)

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/destructiveHint=false, but the description adds substantial behavioral context beyond them: what the reading contains, that off-ladder lanes are extrapolated from the calibration curve, that a concentration law yields a resolving window, co-migrating fragments, immobile DNA forms, empty lanes, and refused calibrations. It also notes that render_mode changes what the reading is about.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and return-value summary are front-loaded before the detail, and the composition instruction follows logically. The long enumerated caution list is informative but heavy for a single sentence and could be trimmed without losing call-relevant meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not enumerate return fields, and it still adds the composition contract with run_gel_lane and the model provenance. The main gap is the absent routing guidance relative to draw_gel and other gel-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already carries the detailed per-parameter prose (including the "Advanced." and "LEAVE UNSET" notes), so the description largely restates rather than extends it. The one addition — that `lanes` accepts exactly what run_gel_lane emits — is useful but marginal, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("Run a multi-lane virtual agarose gel") and immediately scopes the return value ("its READING, not just its bands"). It distinguishes itself from the single-lane sibling by instructing the agent to "wire one `run_gel_lane` per lane into `lanes`," 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the multi-lane framing and the "wire one run_gel_lane per lane" note signal this is the plate-level aggregation of the lane tool. There is no explicit when-to-use/when-not, and the relationship to the sibling draw_gel (drawing vs reading) is never stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_workflowBInspect

Run a workflow graph: nodes naming tools, wires carrying one node’s output into another’s input, $whenExpression to make a step conditional, and scatter to run a step once per element of a list. Returns the run record — per-node status, outputs and errors, in topological order.

NameRequiredDescriptionDefault
graphYesA workflow graph: nodes naming tools, wires carrying one node’s output into another’s input, and the two constructs a single tool call cannot express — `$whenExpression` (run this node only if…) and `scatter` (run it once per element of a list input, gathering every output into an array).
_filesNoThe project's files, standing in for the project open in the editor: each is one record reference (a `file`, `sample`, `accession` or named `sequence`). Every sequence record they hold becomes a library document a tool can name in its `sequences`/`parts`/`document` arguments (a multi-record file as `file · record`), and a tool reading a file by name (a trace, an alignment) finds it here.
_subjectNoThe record this call acts on, standing in for the document open in the editor. Exactly one of: `sequence`, `file`, `sample`, `accession`. This server holds no project, so a tool needing a subject gets it here or refuses by name.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and openWorldHint=true, so the mutating/open nature is already covered. The description adds genuine value by saying the run record contains per-node status, outputs and errors in topological order, implying partial results and collected errors rather than an abort-on-first-failure, but it says nothing about side effects, idempotency, or failure/abort semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the action and then the return shape; every clause carries information. It is slightly overloaded with construct names that the schema repeats, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, the description does describe the return record's contents and ordering. Combined with annotations covering the non-read-only, open-world profile and a fully documented schema, little is missing beyond error/abort behavior and guidance against sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the nested graph/edges/nodes properties already document $whenExpression, scatter and wiring in detail. The description restates those constructs without adding syntax or constraints the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('run a workflow graph') and elaborates the graph's semantics (nodes naming tools, wires, $whenExpression, scatter), so an agent knows exactly what is executed. It does not differentiate from the closely related siblings validate_workflow and list_workflow_templates, which keeps it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. With siblings named validate_workflow and list_workflow_templates in the same server, the description should say when to validate or list instead of run, and it offers nothing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_enzyme_collectionAInspect

Save a set of enzymes as a named collection in your Enzyme Collections panel, so a scan that found the enzymes worth keeping ends by keeping them instead of asking you to retype the list. Every name is checked against the cut catalog first and an unknown one refuses the whole save by name, because a collection that silently lost two enzymes is worse than one that was never made. An existing collection is never overwritten unless you say so.

NameRequiredDescriptionDefault
nameYeswhat to call the collection, as it will read in the panel.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymesYesthe enzyme names to save — wire these from a scan (enzyme_cut_counts, digest_fragments) or from enzyme_collection rather than typing them, so the set is one the engine has already resolved.
replaceNooverwrite a collection that already has this name. Left false, a name clash refuses and says which collection it would have replaced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
activateNomake it the active collection, which is what the panel does when you create one — every enzyme parameter that is left unset then scopes to it.

Output Schema

NameRequiredDescription
countYeshow many enzymes it holds
activeYeswhether this collection is now the one an unset enzyme parameter resolves to
createdYestrue for a new collection, false when an existing one of the same name was replaced
enzymesYesthe names as saved, de-duplicated in the order given — wireable straight into a scan
collectionYesthe name it was saved under

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only tell the agent this is a non-destructive write; the description adds real operational detail the annotations cannot: every enzyme name is validated against the cut catalog, an unknown name aborts the entire save (atomic, name-identified failure) rather than silently dropping members, and an existing collection is protected unless replace is set. No contradiction with destructiveHint=false, since overwrite is explicitly opt-in.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, and the validation and overwrite guarantees follow in order of importance. The middle sentence carries a small editorial aside ('a collection that silently lost two enzymes is worse than one that was never made') that is persuasive rather than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full param coverage, the description need not explain returns. For a write tool it covers the important behavioral guarantees (validation, atomic failure, opt-in overwrite) but says nothing about permissions or the activate/default-active behavior context, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description frames why names must be engine-resolved and reiterates the replace protection, but adds little syntax or format detail beyond what the schema properties already state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: save a set of enzymes as a named collection in the Enzyme Collections panel. It also ties the purpose to a concrete workflow (a scan that produced enzymes worth keeping), which distinguishes it from read-side siblings like enzyme_collection without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context — use it after a scan to persist the enzymes worth keeping rather than retyping the list — and the param notes reinforce wiring names from enzyme_cut_counts, digest_fragments or enzyme_collection. It stops short of explicit exclusions or a named alternative for the opposite case, so no 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scaffold_networkA
Read-only
Inspect

The scaffold network (Kruger et al. 2020) of a list of small molecules, as RDKit's CreateScaffoldNetwork builds it, under RDKit's default ring-side cuts or the 46 BRICS bond types (Degen 2008). Every node with the structures that contain it and how many times the network made it, and every edge with RDKit's type. Structures over the cut limit are named and left out. Indices are 0-based.

NameRequiredDescriptionDefault
rulesNowhich bonds are cut. Values: rings (Ring side of each cut), brics (BRICS, both sides).rings
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculesYesthe structures: one SMILES or molfile per entry.

Output Schema

NameRequiredDescription
edgesYesevery edge: from and to node indices and its RDKit type
nodesYesevery node: SMILES, the input indices containing it, times made
summaryYesthe network in words, generated from this run

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare read-only, non-destructive, closed-world behavior. The description adds substantial behavioral detail well beyond them: it identifies the RDKit algorithm, the cut modes, the node/edge contents, the cut-limit exclusion ('named and left out'), and the 0-based indexing convention. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core operation in the first sentence and otherwise dense with useful behavioral facts. The wording is slightly clunky ('how many times the network made it'), but there is little waste for a technically complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, output node/edge content, exclusion behavior, indexing convention, and cut-mode choices; with a full output schema and rich input schema, nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents 'molecules' and the 'rules' enum values. The description adds some context for 'rules' ('46 BRICS bond types', 'ring-side cuts') but does not meaningfully extend the other parameters, so the baseline of 3 for high schema coverage applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific computational resource ('the scaffold network') and the exact operation ('as RDKit's CreateScaffoldNetwork builds it') on a defined input ('list of small molecules'), so its purpose is unambiguous and distinguishable from generic molecule tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to choose this tool over siblings such as cluster_molecules, map_chemical_space, or decompose_r_groups, nor does it give prerequisites or when-not-to-use guidance. It only implies usage from the resource name, so it falls short of actionable usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_intrinsic_terminatorsA
Read-only
Inspect

Find rho-independent (intrinsic) transcription terminators in a bacterial sequence: a stem-loop followed by a thymine-rich tail, scored by TransTermHP's published model (Kingsford, Ayanbule & Salzberg 2007). TWO NUMBERS, BOTH LOWER IS STRONGER - how well the hairpin folds and how thymine-rich the tail is - and NEITHER IS A FREE ENERGY: they are costs in this model's own scheme and must not be compared with a promoter's ΔG or a Turner ΔG. This is the question behind a downstream gene in an operon that goes quiet: a cryptic terminator inside an insert stops transcription that was meant to continue. Rho-DEPENDENT termination needs the protein and is not a sequence motif this or any such model can see. Reports every candidate clearing the two published cutoffs; TransTermHP itself lists one per position after its own overlap filters, so it reports fewer for the same sequence - a difference in reporting, not in scoring. No confidence value is given: TransTermHP's is a lookup into a table calibrated by its own GPL tooling, which is not shipped rather than approximated.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe DNA to scan - leave unset to use the open record.
region_endNo0-based inclusive end. Unset = the whole sequence. Advanced.
max_resultsNohow many to return, best hairpin first. Advanced.
both_strandsNoscan the reverse strand too. On by default: a terminator on the strand you did not draw still stops transcription that runs into it.
region_startNo0-based inclusive start of the region to scan. Unset = the whole sequence; pass the selection's start to scope to it. Advanced.

Output Schema

NameRequiredDescription
countYeshow many are reported
offsetYeswhere the scanned stretch starts in the sequence: add it to every position above for sequence coordinates. 0 unless a region was given
strongestYesthe best-folding candidate, or null when none cleared both cutoffs
terminatorsYesthe candidates, best hairpin first, each with its stem-loop, its tail, the stem length and both scores
strongestHairpinYesthat candidate's hairpin score on its own, for a threshold downstream (lower is stronger). null when none cleared both cutoffs: there is no hairpin to score, and a 0 would pass a threshold as a measured value

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, closed-world scan, but the description adds substantial context: the meaning and directionality of the two output numbers, an explicit warning that they are not free energies and must not be compared with promoter ΔG, and the reporting difference from TransTermHP's own overlap filters. It also explains why no confidence value is returned, which is exactly the kind of behavior an agent would otherwise misinfer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the sentences carry real information rather than restating the schema. It is dense and long, with emphatic ALL-CAPS clauses and several defensive caveats, but each caveat guards against a plausible misinterpretation of the scores.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return formatting needn't be described, and the description instead covers what matters: the semantics of the scores, the rho-dependent blind spot, and the reporting-vs-scoring distinction. For a 7-parameter scanning tool this is complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (sequence, region_start/end, max_results, both_strands, _subject, _files) is already documented in the schema, including the 'best hairpin first' ordering and the both_strands rationale. The description text itself adds no further parameter-level detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find rho-independent (intrinsic) transcription terminators'), defines the motif concretely (stem-loop plus thymine-rich tail), and cites the scoring model. It also draws a hard boundary against rho-dependent termination, so an agent can distinguish it from the other scan_* 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear motivating scenario ('the question behind a downstream gene in an operon that goes quiet') and states the case it cannot handle (rho-dependent termination). However, it never names or routes to a sibling tool (e.g. scan_sigma70_promoters, fold_rna), so the when-to-use guidance is contextual rather than comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_motif_sitesA
Read-only
Inspect

Find every place a transcription-factor binding motif (a position-frequency matrix, such as a JASPAR matrix's counts) matches a DNA sequence, on both strands, at a threshold set per motif as a fraction of that matrix's own score range. It is the scan the optimizer's avoid-motif specification counts, so the sites it lists are the ones an optimisation with that motif would remove. Each site carries its log-odds score and where that score falls in the matrix's range. A match is a sequence resemblance to the matrix, not evidence of binding.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
motifsYesthe matrices, each {name, counts: {A, C, G, T} per position, relativeThreshold (0-1 of the matrix's score range) or threshold (absolute log-odds)}. Pseudocounts are JASPAR's sqrt(N) by default.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe DNA to scan - leave unset to use the open record.

Output Schema

NameRequiredDescription
countYeshow many matches in total
sitesYesevery match, by position: motif name, start and end (0-based, end exclusive), strand, log-odds score and its fraction of the matrix's range
perMotifYesthe number of matches for each motif, by name

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so this dimension is about added context. The description adds real behavioral value: both-strand scanning, per-motif threshold as a fraction of the matrix's own score range, log-odds score-and-rank per site, and the important interpretive caveat that a match is sequence resemblance, not evidence of binding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then context, return content, and caveat in a logical order. The phrasing 'the scan the optimizer's avoid-motif specification counts' is slightly convoluted, but overall size is appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, and the description still usefully signals what each site carries. Covers mechanism, threshold semantics, return content, and interpretation. The only real gap is explicit routing versus sibling scan tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the relativeThreshold vs absolute-threshold semantics. The description restates the fraction-of-score-range idea in natural language, adding marginal meaning but not going beyond the schema's own parameter documentation. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Find) and resource (transcription-factor binding motif matches in a DNA sequence), and pins down the matrix-based scoring model in the parenthetical, which cleanly distinguishes it from pattern-based siblings like find_linear_motifs and promoter-specific scans like scan_sigma70_promoters. An agent can identify the operation 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The relation to the optimizer's avoid-motif specification gives context about anticipated use, but there is no explicit when-to-use/when-not statement and no named alternative among the many scan_*/find_* motif siblings. Usage is implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_protein_domainsA
Read-only
Inspect

De-novo protein domain and family annotation: submits a protein to EMBL-EBI InterProScan and returns every member-database signature that matches it — Pfam, CATH-Gene3D, SUPERFAMILY, PANTHER, PROSITE, SMART, CDD and the rest — with its InterPro entry, its GO terms, its coordinates and its E-value. This is the DOMAIN half of the Protein domains panel; for the short linear motifs a profile scan cannot see, use find_linear_motifs, which takes the domains this tool emits. The scan runs at EBI, takes minutes, and needs a contact address because EBI requires one.

NameRequiredDescriptionDefault
emailNoEBI requires a contact address on every submission (their abuse contact, not a login). Left empty, the one saved in any EMBL-EBI panel is used, which only the in-browser doors can read. It is sent to EBI with the job and stored nowhere by this tool.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sortByNorow order of the returned matches. Values: length (longest first), position (position along the protein), evalue (best E-value first), library (by member database).length
goTermsNoask InterPro to attach Gene Ontology terms to the integrated entries, so a match carries its function rather than only its accession.
proteinYesthe protein sequence, one-letter codes; wire it from translate_sequence or read it off a CDS.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
pathwaysNoask InterPro to attach pathway cross-references (Reactome, KEGG, MetaCyc) to the integrated entries.
maxEvalueNodrop matches whose E-value is worse than this. 0 applies no threshold. A match the member database scores no E-value for (Coils, MobiDB-lite, Phobius) is KEPT either way — it has not failed the threshold, it was never scored against one.
applicationsNomember databases to run, comma-separated, using InterProScan's own ids (Pfam, Gene3D, SUPERFAMILY, PANTHER, PROSITE …). Empty runs the service's own default set, which is every database it has enabled. An id the live service does not advertise is refused by name rather than dropped.
integratedOnlyNokeep only signatures integrated into an InterPro entry, dropping member-database hits InterPro has not curated into one.
visibleLibrariesNokeep only matches from these member databases, comma-separated, as the RESULT document spells them (PFAM, GENE3D, SUPERFAMILY, CDD, PANTHER, MOBIDB_LITE …). This narrows what comes back; `applications` narrows what is RUN, and they are not the same question — a caller reading one library out of the service's default set wants this one. Empty keeps every database that answered.
representativeOnlyNokeep only the matches InterProScan itself marks representative — its own answer to “which of these overlapping signatures describes this region best”.

Output Schema

NameRequiredDescription
countYesmatches returned, after the reading knobs
jobIdYesEBI's own job id, which is re-fetchable at their dispatcher for as long as they keep it — the provenance of this result, not an internal handle
domainsYesthe FOLDED regions only — domains, as `start-end@label` residue ranges — ready to wire straight into find_linear_motifs.domains so its globular-domain filter can bury motifs in them. Families, signal peptides, transmembrane helices, coiled coils and disordered spans are excluded: those are not folds a motif can hide inside, and disorder is where linear motifs live
matchesYesevery signature that matched, after the reading knobs: member database, signature accession and name, the InterPro entry it is integrated into, its kind (domain, family, site, repeat, homologous superfamily…), 1-based inclusive aaStart/aaEnd, the fragments a discontinuous domain is made of, the E-value and the GO and pathway cross-references
provenanceYesthe InterProScan version that ran, the MD5 the service computed over the sequence it analyzed, the member databases asked for, how many matches the scan returned before the reading knobs, and which of those knobs ran

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the description is judged for added context. It adds real operational traits: the scan 'runs at EBI, takes minutes' (remote execution + latency) and 'needs a contact address because EBI requires one' (a submission constraint). It does not, however, discuss failure modes or what happens on EBI-side rejection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the action and scope, then the sibling routing, then the operational caveat. Nearly every clause earns its place, though the long database enumeration and 'and the rest' are slightly padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 12 parameters and nested objects, the description supplies everything an agent needs beyond structured fields: the remote/long-running nature, the mandatory contact address, and the downstream chaining to find_linear_motifs. Return values are covered by the output schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself is unusually explicit (e.g. the applications vs visibleLibraries distinction, maxEvalue's E-value-less member handling). The description only reinforces the email requirement, which the schema already fully documents, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('De-novo protein domain and family annotation', 'submits a protein to EMBL-EBI InterProScan') and enumerates the member databases returned (Pfam, CATH-Gene3D, SUPERFAMILY, PANTHER, PROSITE, SMART, CDD). It explicitly distinguishes itself from sibling find_linear_motifs by calling itself 'the DOMAIN half of the Protein domains panel'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative tool (find_linear_motifs) and the condition that selects it ('for the short linear motifs a profile scan cannot see'), including the data-flow relationship ('which takes the `domains` this tool emits'). This is an explicit when-to-use/when-to-use-something-else routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_sigma70_promotersA
Read-only
Inspect

Find σ70 (housekeeping) promoters in a bacterial sequence and say how strong each one is, using the published La Fleur-Hossain-Salis biophysical model - six interaction motifs (UP element, -35, spacer, extended -10, -10, discriminator) plus the R-loop strength of the first transcribed bases, fitted on 22,132 characterised promoters. THE NUMBER IS A FREE ENERGY AND MORE NEGATIVE IS STRONGER, which is the opposite direction from a score; the transcription rate beside it is the paper's own rate law over that energy. It answers "could RNA polymerase start here", not "does it": nothing here knows about regulators, supercoiling or growth phase. It is E. coli σ70 and says nothing about σ38/σ32/σ54 promoters or about another organism's polymerase.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_dgNoreport only configurations at or below this ΔG_total. UNSET BY DEFAULT and deliberately so: this model publishes no significance cutoff, so the answer is a RANKING of the strongest configurations rather than a set of calls, and inventing a floor here is the exact defect the scanner this replaces had. Set it when you have a threshold of your own. In kcal/mol.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe DNA to scan - leave unset to use the open record.
region_endNo0-based inclusive end. Unset = the whole sequence. Advanced.
max_resultsNohow many to return, strongest (most negative) first. Advanced.
both_strandsNoscan the reverse strand too. On by default: a cryptic promoter does not care which strand your insert was drawn on, and scanning one is how one gets missed.
region_startNo0-based inclusive start of the region to scan. Unset = the whole sequence; pass the selection's start to scope to it. Advanced.

Output Schema

NameRequiredDescription
countYeshow many are reported (`max_results`, or fewer if the sequence is short or `max_dg` was set)
offsetYeswhere the scanned stretch starts in the sequence: add it to every position above for sequence coordinates. 0 unless a region was given
promotersYesthe configurations, strongest (most negative) first, each with its six motif sequences, their positions and the per-motif energies that sum to its total
strongestYesthe most negative ΔG_total, or null when the sequence is too short to hold one
strongestDgYesthat hit's ΔG_total on its own, for a threshold downstream, or null when there is no hit

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower, yet the description adds substantial context: the number is a negative-is-stronger free energy (opposite of a score), the accompanying transcription rate is the paper's own rate law, and outputs form a ranking with no significance cutoff. That is meaningful behavioral disclosure well beyond the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense but front-loaded paragraph that opens with the action and then layers in the sign convention, the rate law, and scope limits. Every clause carries information, though the single block is long and could be broken up for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the model's complexity, the description supplies the model provenance, output-sign semantics, and the biological scope caveats, and an output schema exists to carry the return structure. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema itself documents max_dg, both_strands, region_start/end and max_results — baseline 3. The description reinforces one point (results are a ranking, not calls) but does not add syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (find σ70 housekeeping promoters in a bacterial sequence) and names the exact method (La Fleur-Hossain-Salis biophysical model over six interaction motifs plus R-loop strength). An agent can immediately distinguish this from generic motif scanners like scan_motif_sites or scan_intrinsic_terminators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit boundary for use: it answers 'could RNA polymerase start here', not 'does it', and it knows nothing about regulators, supercoiling or growth phase; it also states it says nothing about σ38/σ32/σ54 or other organisms' polymerases. Strong when/when-not framing, though it does not name alternative sibling tools to route to.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_splice_sitesA
Read-only
Inspect

Find the splice sites a sequence accidentally spells - the check a codon-optimised CDS needs before it goes into a plant or any other eukaryotic host, because a synonymous swap chosen for codon usage or GC can spell a donor or acceptor that was not there before, and the transcript is then spliced somewhere nobody intended. Every GT and AG is scored two ways that are NOT on one scale and are never combined: maxEnt is strength under Yeo & Burge's published maximum-entropy model, and typicality is log-odds against base frequencies MEASURED at the annotated splice sites of Arabidopsis thaliana TAIR10 (Ensembl Plants 63). IT RETURNS NO VERDICT and has no default threshold: neither model publishes a cutoff, so this RANKS candidates and what counts as dangerous is your call, with both numbers in front of you.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
strandNowhich strand to read. Both by default: an antisense site still splices a transcript made from the other strand, and in a construct both may be transcribed. Name the gene's own strand when you know it, and the other strand's candidates stop crowding the ranking.both
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
sequenceNothe DNA to scan - leave unset to use the open record.
min_maxentNoreport only sites at or above this MaxEntScan score, in bits. UNSET BY DEFAULT and deliberately so - MaxEntScan publishes no significance cutoff and the measured matrices are a description rather than a classifier, so a default here would be a decision boundary nobody has published. Set it when you have a threshold of your own. In bits.
max_resultsNohow many to return, strongest first. Advanced.

Output Schema

NameRequiredDescription
countYeshow many are reported
sitesYesthe candidates, strongest MaxEnt first, each with its kind, position on the strand you passed, the window that was scored, and both scores
strongestYesthe highest-scoring candidate, or null when the sequence is too short to hold a window
strongestMaxEntYesthat candidate's MaxEntScan score on its own, for a comparison downstream, or null when there is no candidate: 0 is a real MaxEntScan score

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety (readOnlyHint true, destructiveHint false, openWorldHint false), but the description adds substantial non-obvious behavior: GT/AG scoring under two incommensurable models (maxEnt vs typicality), that they are never combined, that no published cutoff exists, that no default threshold is applied, and that the output is a ranking without a verdict. That is exactly the behavioral context an agent needs to avoid misinterpreting results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the failure mode it guards against, then the two-metric explanation. It is dense and long with some emphatic repetition (no verdict / no default threshold / no cutoff restated), which costs it a point but each idea does work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description supplies the domain framing, the two score semantics, the no-threshold stance, and strand guidance. Minor gap: it does not touch record resolution (_subject/_files), though the schema covers that adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds meaning by explaining what maxEnt means (Yeo & Burge maximum-entropy strength) versus typicality (log-odds against Arabidopsis TAIR10 measured base frequencies), which frames what min_maxent filters on, and reinforces why it is unset by default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Find the splice sites a sequence accidentally spells') and pins down the exact scenario it serves: a codon-optimised CDS bound for a plant/eukaryotic host. It is clearly distinguishable from siblings like scan_motif_sites, find_restriction_sites and scan_intrinsic_terminators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger (pre-host-transfer check for a synonymous swap that may have spelled a donor/acceptor) and tells the agent how to read the result: no verdict, no default threshold, ranking only, decision is the caller's. It does not name alternative sibling tools to use instead, so it stops short of 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.

score_overhang_fidelityA
Read-only
Inspect

Score a Golden Gate junction (fusion-site) set against MEASURED T4 DNA ligase end-joining data. It is the number NEB's Ligase Fidelity Viewer reports: the expected fraction of assemblies in which EVERY junction ligated correctly. This is the quantitative counterpart to check_golden_gate_parts: that says whether the parts will be cut, this says whether the pieces will go back together in the right order. Wire golden_gate_assemble's overhangs output straight into it.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
enzymeNothe Type-IIS enzyme the reaction uses, which picks that enzyme's own measured matrix when one exists. Only applies when dataset is not given.
datasetNoscore against this measured matrix instead of the one the enzyme implies. Values: BsaI-HFv2 (BsaI-HFv2, Golden Gate cycling (4 nt)), BsmBI-v2 (BsmBI-v2, Golden Gate cycling (4 nt)), Esp3I (Esp3I, Golden Gate cycling (4 nt)), BbsI-HF (BbsI-HF, Golden Gate cycling (4 nt)), SapI (SapI, Golden Gate cycling (3 nt)), T4-01h-25C (T4 DNA ligase, 1 h at 25 C (4 nt)), T4-01h-37C (T4 DNA ligase, 1 h at 37 C (4 nt)), T4-18h-25C (T4 DNA ligase, 18 h at 25 C (4 nt)), T4-18h-37C (T4 DNA ligase, 18 h at 37 C (4 nt)).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
remediesNoalso compute what to CHANGE: the drop-the-worst repair, and replacement candidates for each flagged junction. Off makes the run cheaper on a large set.
overhangsYesthe junction overhangs, one per junction, top strand (e.g. AATG, GCTT). Wire `golden_gate_assemble.overhangs` here, or list them.
replacements_per_junctionNohow many replacement candidates to rank per flagged junction. Advanced.

Output Schema

NameRequiredDescription
flagsYesweak, self-misannealing and cross-misannealing junction indices, plus the structural verdict
worstYesthe weakest junctions, worst first: what to change to raise the score
repairYesthe drop-the-worst repair: which junctions to remove, what is left, and the fidelity that leaves. Null when `remedies` is off
datasetYesthe measured matrix actually scored against
percentYesthe same number as a percentage, which is how every incumbent reports it
fidelityYesexpected fraction of fully-correct assemblies, 0-1
junctionsYesper junction: overhang, correct/total measured events, its own fidelity, Watson-Crick strength, and its strongest mismatch partners
meaningfulYesfalse when a STRUCTURAL error makes the fidelity number misleading rather than merely bad: do not present `fidelity` on its own when this is false
replacementsYesper FLAGGED junction, the best overhangs to swap in, each with the whole set’s fidelity after the swap. Empty when `remedies` is off
atMeasurementCeilingYestrue when NO mismatch ligation was measured between any two junctions, so the score is exactly 100%: the floor the source experiment can resolve, not a guarantee

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a read-only, closed-world, non-destructive operation, so the safety profile is covered. The description adds meaningful context beyond that: the score comes from measured T4 DNA ligase end-joining data and represents the probability that every junction in the assembly ligated correctly. It does not discuss data coverage or fallback behavior when neither enzyme nor dataset is supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the core purpose and followed by the meaning of the metric and the wiring instruction. Every sentence is useful, though the NEB Ligase Fidelity Viewer reference, while helpful, is the least essential part.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has annotations, an output schema, and full schema descriptions, so the remaining burden on the description is light. It adequately explains what is being scored and where the input comes from. It does not clarify the default scoring matrix when neither enzyme nor dataset is specified, which is a minor gap for a quantitative scoring tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents overhangs, dataset, enzyme, remedies, and replacements_per_junction. The description reinforces the overhangs wiring but adds no new parameter-level meaning beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('score a Golden Gate junction (fusion-site) set') and explains exactly what the score means: the expected fraction of assemblies where every junction ligated correctly. It explicitly distinguishes itself from check_golden_gate_parts and names golden_gate_assemble as the upstream source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear when-to-use contrast with check_golden_gate_parts ('that says whether the parts will be cut, this says whether the pieces will go back together') and tells the agent to wire golden_gate_assemble's overhangs output into it. It does not state explicit exclusions or prerequisites, so it falls just short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_rbsA
Read-only
Inspect

Score the ribosome-binding site already in front of a start codon: the Shine-Dalgarno hybridisation energy, the mRNA folding that competes with it, the spacing it implies, and the resulting relative initiation strength. This reads an existing 5'UTR — design_rbs writes a new one.

NameRequiredDescriptionDefault
mrnaNothe mRNA (or DNA) carrying the UTR and the CDS — leave unset to use the open record.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
start_posYes0-based position of the start codon's first base within `mrna`.

Output Schema

NameRequiredDescription
dgMrnaYesfolding energy of the mRNA window that competes with initiation
dgTotalYestotal free energy of the initiation state (null when no Shine-Dalgarno could be placed)
sdStartYes0-based position in `mrna` where the winning Shine-Dalgarno begins (null when none could be placed)
spacingYesbases between the Shine-Dalgarno and the start codon (null when no Shine-Dalgarno could be placed)
dgHybridYesShine-Dalgarno · anti-SD hybridisation energy (null when no Shine-Dalgarno could be placed)
sdLengthYeslength of that Shine-Dalgarno, in bases (null when no Shine-Dalgarno could be placed)
structureYesdot-bracket secondary structure of the folded initiation window (empty when the window is too short to fold)
relStrengthYesrelative initiation strength (higher = stronger)
structureStartYes0-based position in `mrna` that the first character of `structure` sits on

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine value by disclosing what the scoring actually produces (four distinct biophysical quantities) and that it operates on pre-existing sequence rather than mutating anything.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the first front-loads the verb and enumerates the outputs, the second establishes the read-vs-write boundary against the sibling. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers purpose, computation, and sibling differentiation for what is a narrow read-only tool. Nothing an agent needs in order 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (mrna, _files, _subject, start_pos) are already documented, which sets the baseline at 3. The description only adds framing that the scored RBS sits 'in front of a start codon', weakly reinforcing the semantics of start_pos, without adding syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (score) plus resource (ribosome-binding site) and enumerates exactly what is computed: Shine-Dalgarno hybridisation energy, competing mRNA folding, implied spacing, and relative initiation strength. It also explicitly distinguishes itself from the sibling design_rbs by framing this as reading an existing 5'UTR, so an agent can disambiguate 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative tool explicitly ('design_rbs writes a new one') and gives the condition that selects this one instead ('reads an existing 5'UTR'). It sets a clear boundary between reading/scoring and writing/designing, leaving no inference needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_spectrumA
Read-only
Inspect

Score how well an MS/MS spectrum matches a peptide with the X!Tandem HyperScore (validated against OpenMS): b and y ions are generated for the peptide, matched to the observed peaks within a tolerance, and scored as ln(1 + dot product) + ln(matched b!) + ln(matched y!).

NameRequiredDescriptionDefault
mzYesobserved peak m/z values.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
peptideYescandidate peptide, one-letter residues with optional ProForma tags (a signed mass, a Unimod name, or UNIMOD:accession).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
intensityYesobserved peak intensities, one per m/z.
toleranceNofragment match tolerance.
toleranceUnitNounit of the tolerance.Da
precursorChargeNoprecursor charge; fragments are generated at charges 1 to max(1, charge - 1).

Output Schema

NameRequiredDescription
scoreYesHyperScore (natural log scale; higher is a better match)
detailYesmatched b and y ion counts, mean match error, theoretical peak count
matchesYesone row per matched ion: ion name, theoretical and observed m/z, intensity, error in the tolerance unit

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, closed-world behavior, so the bar is lower. The description adds valuable algorithmic transparency: b/y ion generation, tolerance-based matching, and the exact scoring formula. It does not mention auth or rate limits, but for a pure read/score operation this is rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no padding. The algorithm formula is dense but necessary for understanding the score, and the sentence is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no description, and annotations cover safety. The description supplies the algorithm context needed to interpret the score. It could optionally note score interpretation or input validation, but overall it is complete for a computational tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all eight parameters including defaults and enums. The description mentions peptide, tolerance, and peak matching but adds no syntax or format details beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Score) and resource (MS/MS spectrum match to a peptide) with the named X!Tandem HyperScore algorithm. It distinguishes itself from siblings like peptide_mass or fragment_ions by describing the scoring mechanism and validation against OpenMS.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how scoring works but never states when to use this tool, when not to, or names any alternative. An agent must infer applicability from the tool name and algorithm details alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_variant_effectA
Read-only
Inspect

Score protein substitutions with ESM-2, the zero-shot way facebookresearch/esm's own predict.py does: how much less (or more) likely the mutant residue is than the wild type at that site, under a protein language model. It ranks a saturation library without an assay — and it is a RANKING IN NATS, not a stability measurement: it carries no kcal/mol and is calibrated against nothing. THE MODEL IS DOWNLOADED ON FIRST RUN, 30 MB for the 8M export and 2.6 GB for the 650M one, then cached; a run in a browser with no network to Hugging Face will refuse rather than hang.

NameRequiredDescriptionDefault
modelNowhich published ESM-2 ONNX export to score under. The three sizes are a download decision as much as an accuracy one, and the label says which. Values: esm2_t6_8M (ESM-2 8M · 30.3 MB), esm2_t12_35M (ESM-2 35M · 134.5 MB), esm2_t33_650M (ESM-2 650M · 2.61 GB).esm2_t6_8M
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
proteinYesthe protein the positions are numbered against, one letter per residue. Wire a translation, or the CDS protein the library was designed on — the positions mean nothing without it.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
strategyNohow the score is computed. `masked-marginals` is ESM-1v's recommendation — one forward pass per residue, each with that site masked. `wt-marginals` is one pass over the wild type and the paper reports it as weaker. `pseudo-ppl` scores the whole mutant sequence and costs one pass per residue PER VARIANT, which is two orders of magnitude more; its number is a log-likelihood, not a ratio, and is comparable only against other variants of the same protein. Values: wt-marginals (Wild-type marginals), masked-marginals (Masked marginals), pseudo-ppl (Pseudo-perplexity).masked-marginals
variantsYesthe substitutions, in `A24D` form: wild-type residue, position, mutant residue. Every one is checked against `protein` first, because a scored substitution whose wild type does not match is a confident number about a protein nobody has.
offset_idxNothe number `position` counts from. 1 is ordinary protein numbering; set it when your variants are numbered against a mature chain or a construct that starts partway in. Advanced.

Output Schema

NameRequiredDescription
modelYeswhich ESM-2 export produced these scores. Scores from two models are not comparable
passesYesforward passes the run cost — the price of the strategy, after the fact
rankedYesjust the substitution notations, in the same order — the list to take forward into an order or a filter
scoresYesevery variant with its score in nats, the strategy that produced it and the forward passes it cost — MOST DAMAGING FIRST, which is the reason to rank a library at all
captionYesthe one sentence a score may never be shown without, generated from THIS run rather than fixed: what the number means under the strategy that produced it, and what it is not
strategyYeswhich of the three strategies ran. Scores from two strategies are not comparable either, and pseudo-perplexity is not even the same quantity
mostDamagingYesthe lowest-scoring substitution. It is the model's opinion about likelihood, not a measured loss of function, and `caption` is the sentence that says so
variantCountYeshow many substitutions were scored
leastDamagingYesthe highest-scoring substitution — the one the model finds most ordinary

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and destructiveHint=false, yet the description still adds substantive behavior: first-run model download (30 MB vs 2.6 GB), caching, and a hard-refuse-instead-of-hang policy when there is no network to Hugging Face. That is real operational context an agent needs to set expectations and avoid timeout assumptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what it does and its most important caveat (ranking, not kcal/mol), followed by the download/offline note. Dense but every clause is load-bearing; the model-size parenthetical is slightly long but justified as a download decision the caller must make.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained, and the description covers the two things an agent could otherwise get wrong: misreading the score as a thermodynamic measurement, and assuming network-dependent first-run behavior is instant. Adequate for a 7-param tool with nested objects and enums.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself carries the rich semantics for `strategy`, `model`, `variants`, `offset_idx` and `protein` (including the wt-check behavior). The tool-level description adds no parameter-level detail beyond what the schema already documents, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Score protein substitutions with ESM-2') and pins the method to a named reference implementation (`facebookresearch/esm`'s `predict.py`). It goes further by disambiguating from a nearby-but-different capability ('it is a RANKING IN NATS, not a stability measurement'), so an agent can tell it apart from protein_properties or lookup_variant 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use context ('ranks a saturation library without an assay') and an explicit when-not ('not a stability measurement: it carries no kcal/mol and is calibrated against nothing'). It stops short of naming a sibling tool to use instead when a real stability measurement is wanted, so it is clear context without full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_contaminationA
Read-only
Inspect

Screen a nucleotide sequence for vector, adapter, linker and primer contamination against NCBI's UniVec, using VecScreen's own BLASTn parameters and category rules. Reports every match graded Strong/Moderate/Weak plus the short 'suspect origin' stretches NCBI asks to be removed with the vector, and emits both the N-masked sequence and the longest clean region so a pipeline can gate on the result or carry the clean part onward.

NameRequiredDescriptionDefault
dustNomask low-complexity sequence for SEEDING only (`-dust yes -soft_masking true`): a seed may not START in masked sequence, but an extension may run through it, so a genuine match spanning a repeat is not truncated. Advanced.
buildNowhich UniVec build to search: 'core' is NCBI's curated 3,155-segment subset and is what routine screening should use; 'full' is the complete 6,111-segment set — more sensitive, and more redundant hits.core
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
rewardNoscore for a matching base (`-reward`). Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
penaltyNoscore for a mismatching base, NEGATIVE (`-penalty`). With reward 1 and penalty −5 only a near-exact stretch can score above the reporting floor, which is what makes VecScreen specific. Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
gap_openNocost to open a gap (`-gapopen`); a gap of length k costs `gapopen + k * gapextend`. Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
sequenceNothe nucleotide sequence to screen; leave empty to screen the open record. A protein sequence is refused — this is a nucleotide search.
min_scoreNolowest raw score worth reporting — VecScreen's weakest reportable match. Lowering it reports more and specifies less. Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
word_sizeNoexact-match seed length (`-word_size`). A sequence shorter than this cannot be screened at all, and the engine says so. Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
gap_extendNocost per gapped base (`-gapextend`). Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
internal_weakNoraw score at or above which an internal match is reported at all, as Weak. NCBI leaves a deliberate gap here: an internal match scoring 16-22 is not reportable, because an internal match needs more evidence than a terminal one. Each ladder must stay in order (strong >= moderate >= weak) or the lower rungs become unreachable, and the run is refused rather than graded. Advanced.
terminal_weakNoraw score at or above which a terminal match is reported at all, as Weak. Below this a terminal match is not reported. Each ladder must stay in order (strong >= moderate >= weak) or the lower rungs become unreachable, and the run is refused rather than graded. Advanced.
x_drop_gappedNoX-drop for the preliminary gapped pass, in score units (`-xdrop_gap`, converted); capped at each seed’s own ungapped score. Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
internal_strongNoraw score at or above which an internal match — one that is not terminal — is graded Strong. Each ladder must stay in order (strong >= moderate >= weak) or the lower rungs become unreachable, and the run is refused rather than graded. Advanced.
terminal_strongNoraw score at or above which a terminal match is graded Strong. A terminal match — one reaching within `terminal_distance` of an end of the query or of another reported region — is believed on less evidence than an internal one, which is why the two ladders differ. Each ladder must stay in order (strong >= moderate >= weak) or the lower rungs become unreachable, and the run is refused rather than graded. Advanced.
ungapped_cutoffNolowest ungapped score that sends a seed to gapped extension — blastn’s gap trigger, converted from 27 bits. Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
x_drop_ungappedNoX-drop for ungapped extension, in score units. It bounds extension; it does not change which alignment is optimal. Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.
internal_moderateNoraw score at or above which an internal match is graded Moderate. Each ladder must stay in order (strong >= moderate >= weak) or the lower rungs become unreachable, and the run is refused rather than graded. Advanced.
terminal_distanceNohow close to an end of the query — or to another reported region — a match must reach to count as terminal and be graded on the lower of the two ladders. NCBI's published value is 25 bases. Advanced.
terminal_moderateNoraw score at or above which a terminal match is graded Moderate. Each ladder must stay in order (strong >= moderate >= weak) or the lower rungs become unreachable, and the run is refused rather than graded. Advanced.
suspect_origin_maxNolength under which a stretch of non-vector sequence stranded between two matches (or between a match and an end) is reported as 'suspect origin' — too short to have come from anywhere trustworthy, so NCBI asks for it to be removed with the vector. Advanced.
x_drop_gapped_finalNoX-drop for the traceback that produces the reported alignment, in score units (`-xdrop_gap_final`, converted). Default is NCBI's published VecScreen setting; changing it means the result is no longer VecScreen's. Advanced.

Output Schema

NameRequiredDescription
worstYesthe highest category present — strong | moderate | weak | suspect — or 'clean' when nothing was found. The slot to branch a pipeline on
matchesYesevery raw match, one per database record: coordinates, strand, score and the UniVec entry hit
segmentsYesthe merged contaminated regions, each with its coordinates and category — what the map draws
cleanSequenceYesthe longest stretch carrying no match at all — wire it onward when the screen is a trimming step rather than a gate. Empty when nothing clean is left
maskedSequenceYesthe query with every match and suspect-origin stretch replaced by N — the form NCBI asks a submitter to upload
contaminatedPctYespercentage of the query covered by at least one reported match — the slot to gate on numerically

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/non-destructive/closed-world, and the description adds real behavioral detail beyond that: matches are graded Strong/Moderate/Weak, short 'suspect origin' stretches are reported per NCBI rules, and the tool emits both an N-masked sequence and the longest clean region. It does not mention failure handling (e.g., short-sequence refusal), which lives only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and method, and every clause carries information (grading scheme, suspect-origin reporting, two output artifacts). The second sentence is dense and long but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 23-parameter tool with an output schema and full annotations, the description supplies what those fields cannot: the method's identity, grading semantics, and the downstream gating use case. Input sourcing (sequence/accession/file) and the protein-refusal rule are left to the schema, which covers them adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 23 parameters at 100% schema coverage, the schema already documents every knob down to BLAST flag mapping. The description only frames them collectively as 'VecScreen's own BLASTn parameters,' which is useful framing but adds no per-parameter meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (screen), resource (nucleotide sequence), and target (vector/adapter/linker/primer contamination against NCBI UniVec), plus the exact method (VecScreen BLASTn parameters and category rules). An agent can immediately distinguish this from generic siblings like blast_search or mask_sequence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use context explicit: routine contamination screening whose result a pipeline can 'gate on' and whose clean region can be carried forward. It does not name alternatives or exclusions (e.g., when to prefer plain blast_search or mask_sequence), so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_guidesA
Read-only
Inspect

Screen guide spacers the way CHOPCHOP does before it accepts them: GC gate, self-complementary hairpins inside the spacer, and hairpins against the sgRNA backbone. A guide that folds onto its own scaffold is loaded into Cas9 poorly however good its on-target score is, so this is the check that explains a guide with a good score and no activity.

NameRequiredDescriptionDefault
ggNothe construct starts the transcript GG — upstream's `-gg` REPLACES the spacer's first two bases with G (T7 preference), it does not lengthen it. Advanced.
pre_gNothe construct prepends a single 5' G (upstream's `-preG`) — this one lengthens the scanned string, and upstream's fixed 17-window loop then never reaches its last bases. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
spacersYesthe protospacers to screen (20 nt for SpCas9) — wire `topSpacer` or the spacers out of a design run, or list them.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
backboneNowhich sgRNA backbone the spacer will be cloned into — the hairpin test is against this. Values: original (original gRNA backbone), extended (extended backbone (Cas9-GFP tracking)).original

Output Schema

NameRequiredDescription
cleanYesthe spacers that passed the GC gate and flagged no hairpin — the ones to take forward
countsYesupstream's own four summary counts: total, after the GC screen, with a self hairpin, with a backbone hairpin
screenedYesper spacer: GC, whether it was dropped by the GC gate, the two hairpin verdicts, and every flagged 4-mer with its position
backboneLabelYeswhich backbone the run screened against

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuine behavioral rationale beyond that: it explains that scaffold folding impairs Cas9 loading regardless of on-target score, clarifying the pass/fail logic an agent should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and the checks, with the rationale following. Some phrasing is chatty ('the way CHOPCHOP does', 'however good its on-target score is'), but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description supplies the domain mechanism and the diagnostic use case, leaving little an agent needs beyond what structured fields provide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters (spacers, gg, pre_g, backbone, _subject, _files) in detail. The description adds no parameter-level guidance, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (screen) and resource (guide spacers) and enumerates the actual checks performed: GC gate, self-complementary hairpins, and hairpins against the sgRNA backbone. It does not, however, explicitly distinguish itself from related siblings like fold_guide or crispr_design_guides, so the reader must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear usage scenario: run this before accepting guides (the CHOPCHOP-style pre-acceptance gate) and as the diagnostic when a guide scores well but shows no activity. No explicit alternatives or exclusions are given, so it never says 'use X instead'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_molecule_libraryA
Read-only
Inspect

Screen every structure of a library at once against drug-likeness rules and structural-alert catalogs, as the library grid does, and bin one rule property across it, split at the bound of a chosen rule. Returns, per 0-based structure, the rules it breaks and the alerts it trips, and the binned distribution with how many structures fall within the bound.

NameRequiredDescriptionDefault
binsNohow many bins.
rulesNowhich drug-likeness rules to screen, by id. Every rule by default.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
propertyNothe rule property to bin, at the value the rules judged. Values: mw (Monoisotopic mass), clogp (cLogP (Crippen)), hbd (H-bond donors), hba (H-bond acceptors), lipinskiHbd (Lipinski donors (NH + OH)), lipinskiHba (Lipinski acceptors (N + O)), hbonds (Donors + acceptors), tpsa (TPSA (N and O only)), rotatableBonds (Rotatable bonds), rings (Rings), heavyAtoms (Heavy atoms), numAtoms (Atoms in the graph), molarRefractivity (Molar refractivity (Crippen)), averageMw (Molecular weight (average)), totalAtoms (Atoms, hydrogens included), formalCharge (Net formal charge).mw
moleculesYesthe library: one SMILES or molfile per entry.
alert_setsNowhich structural-alert catalogs to screen against. Empty screens nothing.
split_ruleNothe rule whose bound on that property splits each bar; the first screened rule bounding it by default. Values: rule_of_five (Lipinski rule of five), rule_of_five_beyond (Beyond rule of five), rule_of_four (Rule of four (PPI inhibitors)), rule_of_three (Rule of three (fragments)), rule_of_three_extended (Rule of three, extended), rule_of_two (Rule of two (building blocks)), rule_of_ghose (Ghose filter), rule_of_veber (Veber filter), rule_of_reos (REOS), rule_of_chemaxon_druglikeness (ChemAxon drug-likeness), rule_of_egan (Egan filter), rule_of_pfizer_3_75 (Pfizer 3/75), rule_of_gsk_4_400 (GSK 4/400), rule_of_oprea (Oprea lead-likeness), rule_of_xu (Xu drug-like index), rule_of_cns (CNS penetration), rule_of_respiratory (Respiratory (inhaled/nasal)), rule_of_five_paper (Lipinski rule of five (paper: average MW)), rule_of_ghose_paper (Ghose filter (paper: all atoms, average MW)), rule_of_reos_paper (REOS (paper: net charge bounded, average MW)).

Output Schema

NameRequiredDescription
rowsYesper structure: 0-based index, canonical SMILES, rules broken, alerts tripped
summaryYeshow many structures pass clean, and how many fall within the split bound
distributionYesthe bins (lo, hi, within, outside), the bounds on the property and the split

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the read-only, non-destructive, closed-world profile, so the bar is lower. The description adds genuine behavioral context beyond that: it explains the binning operation, that the split occurs at a chosen rule's bound, and what the result contains per structure. It does not state limits or performance characteristics, but the added semantics are solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences that front-load the core action and then the output. Most of the phrasing earns its place, though 'as the library grid does' is a slightly opaque aside that consumes space without adding precise meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 100% schema coverage, an output schema, and annotations covering the safety profile, the description only needs to frame the operation and how parameters relate. It does so adequately, leaving no critical gap for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline of 3 applies. The description exceeds that by clarifying how property, split_rule, and rules interact - the property is binned at the bound of a chosen rule, and results are reported per structure - adding relational meaning the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (screen a molecule library) and enumerates the two operations: screening against drug-likeness rules and alert catalogs, plus binning one property. It is clear what the tool does. However, it distinguishes itself from siblings only obliquely via 'as the library grid does' rather than naming assess_small_molecule, search_molecule_library, or compare_molecules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 named alternative. The phrase 'as the library grid does' hints at a parallel tool but never says when this batch-screening tool should be chosen over sibling screening or comparison tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_oligo_structureA
Read-only
Inspect

Fold a set of oligos and check them against each other: every oligo's hairpin, its self-dimer anywhere and its self-dimer at the 3' end, plus the cross-dimer with every other oligo in the set, at any position and at a 3' end. This is primer3's thal — the same engine the Tm columns elsewhere use — so a pool can be screened before it is ordered rather than explained after a gel. The 3'-end measures are the ones that matter for a primer-dimer BAND, because only a paired 3' end extends. Works on any oligo: primers, probes, ssODN donors, guides, adapters.

NameRequiredDescriptionDefault
namesNooptional labels, in the same order as `oligos` — what the pair table calls each one. Missing or short, the rest are numbered. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
oligosYesthe oligos to screen, 5'→3'. One is a valid pool: it still gets its hairpin and self-dimer. Wire the primers out of a design run, or list them.
dv_concNodivalent cations (Mg²⁺), mM. In mM.
mv_concNomonovalent cations (Na⁺ + K⁺ + Tris⁺), mM. In mM.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
dna_concNooligo strand concentration, nM — it moves a DIMER's Tm and leaves a hairpin's alone, because a hairpin is unimolecular. In nM.
max_loopNolargest internal loop the alignment will span (primer3's MAX_LOOP). Advanced.
dntp_concNototal dNTPs, mM — subtracted from the divalent term, because dNTPs chelate Mg²⁺. In mM.
temperatureNothe temperature ΔG is evaluated at. It does NOT move any Tm — Tm is the structure's own melting point — so change it to read ΔG at your annealing temperature. In °C. Advanced.

Output Schema

NameRequiredDescription
cleanYesthe oligos that broke no limit of their own AND appear in no flagged pair — the ones to order. An oligo is dropped from here for a partner's sake, which is the point of screening a POOL
pairsYesevery unordered pair INCLUDING the self diagonal, with the any-position and 3'-end cross-dimer and which oligo's 3' end the reported end measure belongs to
limitsYesthe five primer3 cutoffs every verdict here was made against, and the settings file they come from — a verdict whose threshold is not stated is not checkable (§10a)
flaggedYesonly the oligos and pairs that broke a limit, with which limit — the list to act on. Empty is a real result and means every measure sat under primer3's cutoffs
perOligoYesper oligo: its hairpin, its self-dimer anywhere and its 3'-end self-dimer, each with ΔG, ΔH, ΔS, Tm, the limit it was graded against and whether it exceeds it — plus primer3's own drawing of the pairing, so a number can be checked rather than trusted
conditionsYesthe buffer every number here was computed in, including the values left at their default — so a result carries its own reaction rather than an unstated one
provenanceYeswhich primer3 this engine IS, and which one a user comparing against primer3web or bioconda `ntthal` is holding. The two generations disagree on about 3% of primer-length oligos
worstAnyTmCYesthe highest any-position dimer melting temperature in the set, self-dimers included
worstEndTmCYesthe highest 3'-end dimer melting temperature in the set — the single number that predicts a primer-dimer band. Self-dimers count, because an oligo dimerising with itself makes a band too. 0 means no 3'-anchored alignment was found at all, not that the set is safe
worstHairpinTmCYesthe highest hairpin melting temperature across the oligos — a hairpin melting above the annealing temperature competes with the template
incompatibleCountYeshow many DISTINCT pairs broke a limit — the self diagonal excluded, because a single oligo's self-dimer is not a pair problem and counting it makes a one-oligo run report an incompatibility. Branch a workflow on this rather than re-deriving it from `pairs`; read `flagged` for the self-structures

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true and destructiveHint=false already covering safety, the description adds meaningful behavioral context: it identifies the underlying primer3 'thal' engine, explains that 3'-end measures matter because only a paired 3' end extends, and notes the tool works on any oligo type. It does not describe runtime behavior or limitations, but the annotations and output schema cover the main safety and return-shape concerns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and structure, then adds rationale for the 3'-end focus and scope of acceptable oligo types. Every sentence contributes to understanding what the tool does and why it matters, with no wasted filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 parameters, nested project references, and an output schema, the description covers the essential purpose, computation, and usage context. The _files/_subject parameters are left to their schema descriptions, which is reasonable given they are generic project-record arguments.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description itself adds little parameter-level detail beyond implying a set of oligos and noting that it works on any oligo type; it does not explain the concentration or temperature parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Fold a set of oligos and check them against each other', then enumerates exactly which structures are checked (hairpin, self-dimer anywhere, self-dimer at 3' end, cross-dimer with every other oligo). It is very clear about scope, but it does not explicitly name or differentiate from sibling tools such as primer_check or melting_temperature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear usage context: 'a pool can be screened before it is ordered rather than explained after a gel.' This tells the agent when the tool is useful, but it does not state when-not to use it or point to alternative tools for related checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrub_restriction_sitesBInspect

Propose the minimal SILENT synonymous edits that remove forbidden restriction sites from a CDS (a design/write).

NameRequiredDescriptionDefault
dnaYesthe CDS nucleotide sequence (in frame).
tableNothe codon-usage table to guide synonym choice, BY NAME, as the Codon Usage panel lists it. This is the way to pass a table: it resolves against the tables loaded in this project, so the numbers come from one someone built or fetched. Leave unset and the active table is used.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
proteinYesthe CDS translation (for silence checking).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
table_tsvNoONLY for a table you are pasting yourself, measured elsewhere — prefer `table`, which names one this project already has. Do NOT write a table out from memory: codon frequencies are measured data, and a typed one is indistinguishable from a real one in the result. TSV: codon<TAB>count. Advanced.

Output Schema

NameRequiredDescription
dnaYesthe scrubbed CDS (silent edits applied)
fixesYesone entry per synonymous swap made
fixCountYesnumber of codons changed

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-destructive, closed-world behavior, so the safety bar is lower. The description usefully adds the silence constraint (edits must not change the protein) and minimality, but says nothing about what 'forbidden' means, what the output contains, or whether anything is persisted despite 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the key constraints front-loaded and zero filler. It is slightly under-explained rather than padded, which is the right failure mode.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, but for a design/write tool with six parameters the description omits how forbidden sites are determined, whether edits are returned or applied, and how it relates to the restriction-site and domestication siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents dna, protein, table, table_tsv and the record fields in detail. The description adds no parameter-level meaning beyond what is already there, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (propose edits), the exact resource (forbidden restriction sites in a CDS) and the constraints (minimal, silent synonymous). This clearly separates it from find_restriction_sites, which only reports sites, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus alternatives like find_restriction_sites, domesticate_part or optimize_sequence, and no prerequisites or exclusions. The word 'Propose' hints at non-application but the agent must infer that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_literatureA
Read-only
Inspect

Search the published literature: PubMed, Europe PMC (including open-access full-text sections), OpenAlex, Crossref, arXiv, bioRxiv/medRxiv preprints or DataCite datasets.

NameRequiredDescriptionDefault
limitNomaximum records (1–20).
queryYessearch terms, or a command such as "pmid:35486828", "fulltext:PMC9046468" or "openalex_search_works:CRISPR".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourceYeswhich authority to ask.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYeshow many records came back, which is a result even when it is zero
recordsYesthe records the authority returned, in its own field names — wire them into a tool that takes ids, or read them in the transcript
envelopeYesthe authority's whole answer: paging, totals and the query it actually ran
provenanceYesthe authority, the exact endpoints called and when — what makes an answer re-checkable without re-running it

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety and external-network profile is covered. The description usefully adds that Europe PMC includes open-access full-text sections and that bioRxiv/medRxiv and DataCite return preprints and datasets rather than indexed articles, but it says nothing about rate limits, auth, or result volume beyond the schema's limit field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence states the action first and then the source list, with no filler or repetition. It is dense but appropriately sized for the number of sources; it stops one step short of maximal efficiency only because the sentence is a long enumeration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and read-only/open-world annotations cover the safety profile. The source characterisations make the description largely self-sufficient for a tool with five parameters; the only real gap is guidance on selecting among the sources.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the enum by characterising what each source yields (full-text sections, preprints, datasets), which helps an agent map the `source` values to intent. It does not add anything for `query`, `limit`, or the nested `_subject`/`_files` parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Search the published literature") and enumerates the eight source systems it reaches, so an agent knows exactly what domain this covers. It does not differentiate itself from neighbouring retrieval tools such as search_records or query_database, but the listed literature databases make the scope unambiguous enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: you call this tool when you want published literature. The enumerated sources loosely guide the required `source` choice, but there is no explicit when-to-use/when-not, no guidance on picking between PubMed, Europe PMC and OpenAlex, and no alternative tool is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_molecule_libraryA
Read-only
Inspect

Which of a list of small molecules contain a SMARTS substructure, with RDKit's substructure library (pattern-fingerprint screen, then atom matching). Returns the 0-based indices of the hits and of any structure RDKit could not read.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
smartsYesthe substructure, as SMARTS (a plain SMILES reads as one).
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculesYesthe library: one SMILES or molfile per entry.

Output Schema

NameRequiredDescription
hitsYes0-based indices of the molecules that contain the pattern, ascending
unreadYes0-based indices of the entries RDKit could not read, never searched
summaryYeshow many structures contain the pattern, of how many searched

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds useful behavioral context beyond annotations: the two-stage RDKit process (pattern-fingerprint screen, then atom matching) and the fact that unreadable structures are identified by index.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler, and the core purpose is front-loaded. The return-value clause adds useful specificity without unnecessary length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with 100% schema coverage, annotations, and an output schema, the description sufficiently covers the core operation and return shape. It is slightly incomplete in ignoring the optional _files and _subject parameters, but those are schema-described and peripheral to the main search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are documented in the schema itself. The description adds little parameter-level detail beyond calling molecules a list of small molecules and smarts a substructure, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States exactly what it does: identify small molecules containing a SMARTS substructure, and specifies the algorithm and what indices are returned. It does not differentiate from sibling tools such as screen_molecule_library or list_library, so an agent must infer the distinction from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided, and no alternative tool is named. The scenario is implied by the purpose statement, but there are no explicit conditions for choosing this tool over screen_molecule_library or other molecule tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_off_targetsA
Read-only
Inspect

Search a sequence for sites a guide could also cut, allowing mismatches, and score each one (MIT and CFD) plus the aggregate specificity of the guide WITHIN that sequence. This is specificity against what you searched — it is not a genome-wide score, and it says so rather than inventing one.

NameRequiredDescriptionDefault
limitNocap the rows returned (hits come back worst-first: fewest mismatches). 0 = all. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
spacerYesthe protospacer to search for (20 nt for SpCas9).
subjectNothe sequence to search — wire a record or name a library document; leave unset to search the open record.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
circularNosearch across the origin as well. Advanced.
nucleaseNowhich nuclease's PAM and geometry to use. Values: SpCas9 (SpCas9: NGG (3')), SpCas9-NG (SpCas9-NG: NG (3')), SpG (SpG: NGN (3')), SpRY (SpRY: NRN (3')), xCas9 (xCas9: NG (3')), SaCas9 (SaCas9: NNGRRT (3')), SaCas9-KKH (SaCas9-KKH: NNNRRT (3')), AsCas12a (AsCas12a: TTTV (5')), LbCas12a (LbCas12a: TTTV (5')), enAsCas12a (enAsCas12a: TTTV (5')).SpCas9
dna_bulgeNoextra bases in the DNA a site may carry (a gap opened in the guide). 0 searches mismatches only. The ceiling is the width a golden oracle covers, and a bulged hit outside that envelope reports `validated: false` for itself. In nt. Advanced.
rna_bulgeNoextra bases in the guide a site may carry (a gap opened in the DNA). Same envelope as `dna_bulge`. In nt. Advanced.
max_mismatchesNohow many mismatches a site may carry and still be reported.

Output Schema

NameRequiredDescription
hitsYeseach candidate site: position, strand, mismatches, the PAM found, and its MIT/CFD scores
totalYessites found before `limit` was applied
scoredYesfalse when this nuclease has no published MIT/CFD model — the hits are still real, the scores are absent
byMismatchYeshow many sites carry 0, 1, 2 … mismatches — the census a specificity read needs
cfdSpecificityYesaggregate CFD specificity within the searched sequence, 0-100: the same Hsu-form aggregate over each site's CFD score (null when the nuclease geometry is unscored)
mitSpecificityYesaggregate MIT specificity within the searched sequence, 0-100 (null when the nuclease geometry is unscored)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds behavioral substance beyond that: it reports both MIT and CFD scoring plus an aggregate, and it explicitly warns the score is sequence-scoped rather than genome-wide. It does not surface pitfalls like the validated:false bulge envelope, but it does not contradict anything.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what the tool does and its output, with the scoping constraint placed second. Mostly waste-free, though the self-referential clause 'and it says so rather than inventing one' spends words describing the definition rather than the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 10-parameter mutation-free search with a full schema, nested objects and an output schema, so return values and argument formats need not be restated. The description supplies the essential missing framing — the search is scoped to the supplied sequence and yields MIT/CFD plus aggregate specificity — leaving little an agent needs that is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents spacer, subject, nuclease, mismatch/bulge bounds and limit. The description mentions 'allowing mismatches' generically but adds no parameter syntax, ranges or defaults beyond what the schema provides. Baseline 3 is correct here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (search) plus a precise resource (sites a guide could also cut) and an explicit output scope (per-site MIT and CFD scores plus aggregate specificity). An agent can tell this is a within-sequence off-target search, but the description never distinguishes it from the nearby sibling survey_off_targets, which an agent selecting blindly may confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly carves out the applicability domain: 'specificity against what you searched — it is not a genome-wide score.' That is a real when-not signal, but it names no alternative tool for the genome-wide case, so routing between this and survey_off_targets / screen_guides is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_recordsA
Read-only
Inspect

Search the sequence archives by free text (a gene name, a protein, an organism, a phrase) across NCBI Nucleotide and Protein, ENA (plain records, WGS and TSA/TLS assembly sets, and annotated coding/non-coding features), UniProtKB and the iGEM Registry at once, and hand back the matching accessions. This is the half of Fetch from database that answers "which record do I want?"; fetch_record answers "give me that one". A source that is down does not fail the search: its error comes back beside the hits the others returned.

NameRequiredDescriptionDefault
limitNohow many hits to ask each source for. The panel pages at this size, and every source is asked for the same number.
queryYesthe words to search for. Archive query syntax is accepted where the archive accepts it, but plain words are the normal case: "beta-lactamase Escherichia coli", "GFP", "pUC19".
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
sourcesNowhich archives to ask. Each is searched independently and the hits are interleaved, so asking more costs time rather than accuracy. Defaults to the nucleotide pair the panel opens on.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
hitsYesthe full result rows: accession, title, source, organism, length, molecule kind and the archive’s own reported fields
sourceYeswhich archive the top hit came from, ready for the same node's $source where the two vocabularies agree
hitCountYeshow many records came back across every source asked
accessionYesthe top hit's accession, ready for a fetch_record node's $accession. This is the seam between searching and fetching
accessionsYesevery hit’s accession, newline-separated, in the order they are ranked
unavailableYesthe sources that could not answer, each with the reason: empty when every source answered. A search is not a failure because one archive is down, and hiding that would make a short list read as a small literature

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint and destructiveHint, lowering the bar. The description still adds real behavioral context beyond them: results are accessions, sources are searched independently, and a downed source returns its error alongside the other hits rather than failing the whole search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and scope, then the sibling contrast, then the failure semantics. Three sentences that each carry weight, though the long parenthetical enumerating ENA sub-sources is heavier than an agent strictly needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be explained, and the description covers routing, source set and partial-failure behavior. Given nested _subject/_files params, it could say more about how a search result connects to fetch_record inputs, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents query, limit, sources, _files and _subject. The description reinforces query examples and the source set but adds no syntax or semantics beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (sequence archives), enumerates the exact sources searched (NCBI Nucleotide/Protein, ENA variants, UniProtKB, iGEM), and names the sibling it is not: 'fetch_record answers give me that one'. An agent can distinguish the two 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the decision: this tool answers 'which record do I want?' while fetch_record answers 'give me that one'. That is a direct when/when-not routing rule, not an implied one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_substitution_modelA
Read-only
Inspect

Choose the substitution model for a maximum-likelihood phylogeny by fitting every candidate — model x rate-heterogeneity x invariant-sites — on ONE shared topology and ranking them by AIC, AICc or BIC with Akaike weights. Fitting on a shared topology is the point: a model test that also searched topologies would vary two things at once, and a log-likelihood measured on a different tree answers a different question. Wire the winning model into build_tree's ml_model.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
modelsNocandidate substitution models. Every one is fitted; the sweep costs one ML optimisation per candidate.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
criterionNowhich information criterion ranks the table. Changing it re-ranks candidates that are already fitted — it does not re-fit them.AIC
sequencesYesaligned sequences — wire align_sequences' rows here, or name library documents.
include_subjectNoalso include the node's subject.
gamma_categoriesNodiscrete-Γ category counts to try. `[1]` is no rate heterogeneity; `[1, 4]` is the usual sweep and is the panel's default.
include_invariantNoalso try each model with a proportion of invariant sites (+I), doubling the candidate count.

Output Schema

NameRequiredDescription
bestYesthe winning model in the conventional shorthand (e.g. `GTR+G4+I`)
fitsYesevery candidate with its log-likelihood, free parameters, AIC/AICc/BIC and Akaike weight
weightYesthe winner's Akaike weight — the share of the evidence it carries. A low weight means the data do not choose between the top models, which is a finding and not a failure
candidatesYeshow many candidates were fitted
startingTreeYesthe ONE topology every candidate was fitted on, in Newick — reported because it is a shared assumption of the whole table

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the burden is lighter. The description adds genuine behavioral context absent from annotations: the fitting is done on a shared topology, and it explains why that constraint exists (varying two things at once would answer a different question). It does not, however, quantify compute cost or sweep size in the description itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then a short methodological justification, then the concrete handoff to build_tree. Every sentence contributes, though the middle rationale sentence is slightly discursive for an agent deciding whether to call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and annotations carry the safety profile. The description still adds the key operational fact (the result feeds build_tree's ml_model) and the shared-topology invariant, leaving little an agent needs beyond what structured fields supply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the schema already documents every parameter. The description adds the conceptual decomposition that the candidate space is 'model x rate-heterogeneity x invariant-sites', which clarifies the interaction of models, gamma_categories, and include_invariant beyond their individual schema entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Choose the substitution model for a maximum-likelihood phylogeny') and precisely defines the mechanism (fit every model x rate-heterogeneity x invariant-sites candidate on one shared topology, rank by AIC/AICc/BIC). It ends by naming the sibling build_tree and the exact parameter (ml_model) the result feeds, so it is unmistakable against neighbors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool as a precursor step whose output is wired into build_tree's `ml_model`, giving a concrete workflow context rather than an implied one. The shared-topology rationale also clarifies the condition under which this test is the right choice (you must not vary topology and model simultaneously).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_rnaseq_powerA
Read-only
Inspect

Power and FDR for a two-group RNA-seq experiment by SIMULATION (PROPER 1.44.0): whole experiments drawn from a real pilot (Cheung, Gilad, Bottomly, MAQC, or a sequencing depth), each run through edgeR's exact test at every sample size. Reports power stratified by expression, the FDR actually achieved, true and false calls, and power at other depths; reproducible from its seed, value for value against R.

NameRequiredDescriptionDefault
seedNothe seed; round i uses seed + i, as PROPER does. Advanced.
genesNogenes in the simulated experiment.
pilotNowhere each gene's baseline expression comes from: one of PROPER's pilots, a sequencing depth applied to aggregated human expression, or one constant. Values: cheung (Cheung (unrelated people, large dispersion)), gilad (Gilad (human liver, moderate)), bottomly (Bottomly (inbred mice, small)), maqc (MAQC (technical replicates)), depth (Sequencing depth), constant (One constant).cheung
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
cutoffNothe cut-off a gene is called at.
roundsNosimulated experiments. PROPER's own default is 100; each is a full edgeR run at every sample size, so time grows with it.
strataNostratum break points; unset, PROPER's: 0, 10, 20, 40 … 1280, ∞ for expression. Advanced.
targetNowhich DE genes count as worth finding: by |log fold change|, or by |log fold change| / √dispersion. Values: lfc (Log fold change), effectsize (Effect size).lfc
call_byNocall a gene by its FDR or its raw p-value. Values: fdr (FDR), pval (raw p-value).fdr
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
log_meanNothe natural-log mean count every gene shares. Only applies when pilot is constant.
filter_byNodrop the lowest expression strata before counting, and recompute BH over what is left. Values: none (Keep every gene), expr (Drop low expression). Advanced.none
thresholdNothe threshold a DE gene's size must exceed to count.
dispersionNoone dispersion (BCV²) for every gene, instead of the pilot's; left unset, the pilot's own. Advanced.
replicatesNoreplicates per group at each sample size to evaluate.
stratify_byNostratify the power by expression (mean normalized count) or by dispersion. Values: expr (Expression), dispersion (Dispersion). Advanced.expr
second_groupNoreplicates in the second group at each size, when the groups differ. Advanced.
depth_factorsNosequencing depth multipliers to re-weight power to. Advanced.
dropped_strataNowhich strata (1-based) to drop. Only applies when filter_by is expr. Advanced.
log_fold_changeNoone log fold change for every DE gene; left unset, PROPER's normal(0, 1.5) draws. Advanced.
changed_fractionNothe proportion of genes that are differentially expressed.
dispersion_pilotNotake dispersions from this pilot instead (with a depth or a constant baseline, Cheung's unless set). Advanced.
reads_per_sampleNototal reads per sample. Only applies when pilot is depth.

Output Schema

NameRequiredDescription
powerYesmarginal power at each sample size
strataYesthe stratum intervals the stratified readouts are over
powerSEYesthe Monte-Carlo standard error of each marginal power
rScriptYesthe R that reproduces the run
summaryYesper sample size: nominal and achieved FDR (or type I error), marginal power, mean true and false discoveries, false discovery cost
seqDepthYesmarginal power re-weighted to each sequencing depth factor, per sample size
stratifiedFDRYesachieved FDR by stratum and sample size
stratifiedPowerYespower by expression (or dispersion) stratum, one line per sample size

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/openWorldHint/destructiveHint already covering the safety profile, the description adds real value beyond annotations: seed-based reproducibility ('round i uses seed + i'), value-for-value agreement with R, and a runtime warning that cost grows with rounds. It does not discuss memory or failure modes, hence not 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the capability and method, then the reported outputs. It is dense but every clause carries information; the only mild bloat is the long parenthetical pilot list that duplicates the schema enum.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 23-parameter simulation tool with an output schema and full annotation coverage, the description supplies the missing decision-relevant context: what is simulated, which engine, what is reported, and that results are seed-reproducible. Nothing an agent needs to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across 23 parameters, so the schema already documents every field including defaults, enums, and 'Advanced.' markers. The description restates the pilot/method context but adds no parameter nuance the schema lacks, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (power and FDR for a two-group RNA-seq experiment) and pins the method (PROPER 1.44.0 simulation, edgeR exact test at every sample size). This clearly separates it from the analytic siblings compute_rnaseq_power / calculate_power and the design-oriented plan_rnaseq_experiment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by SIMULATION' implies the context — use this when you want empirical power/FDR rather than an analytic estimate — but the description never names calculate_rnaseq_power or calculate_power, nor states when to prefer one over the other. Usage is inferable, not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_taqman_curveA
Read-only
Inspect

Predict the amplification curve a hydrolysis-probe (TaqMan) qPCR assay will draw, and the Cq read off it, from the assay's own sequences and its thermocycling programme - a forward simulation, not a fit to data. Ports DYNAMIC (Kreitmann et al., Anal. Chem. 2026, 98(12):9089-9101): thirteen species, four phases per cycle, mass-action annealing integrated as a stiff ODE, with primer-dimer formation and amplicon re-annealing competing for the primers. It is SINGLEPLEX, which is the paper's own stated limit and not an omission here - one target per run, no interassay competition. Two things it needs said about their provenance every time they are quoted: the primer-dimer free energy is upstream's NUPACK quantity and primer3's thal is explicitly NOT a substitute for it, and the association rate constants are one assay's FITTED values reused, not physical constants.

NameRequiredDescriptionDefault
betaNostretching exponent of the decay, exp(-(k_deg*t)^beta). Upstream ships 1, which makes the decay a plain exponential. Advanced.
k_degNopolymerase thermal-decay rate constant. Upstream SHIPS this at 0 - no decay, efficiency identically 1 at every cycle - with its own code commenting 'original value: 1.9e-4'. Left at 0 you are running the model upstream ships; raise it and the plateau bends down. Advanced.
probeYesthe hydrolysis probe, 5'->3'. Fluorescence in this model IS probe cleavage, so without a probe there is no curve to predict - this is a TaqMan simulator and not a SYBR one.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
cyclesNohow many cycles to run. In cycles.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
ampliconYesthe amplicon, forward strand, 5'->3'. The whole product, not the region between the primers: the amplicon's own re-annealing is a species in the model and it competes with the primers for template late in the run, which is what bends the plateau.
probe_molarNoprobe concentration, mol/L (150 nM in upstream's assay). It caps the plateau: fluorescence cannot exceed the probe you put in. In M. Advanced.
annealing_timeNoseconds at the annealing temperature. A real parameter of the answer, not a formality: the system is NOT at equilibrium when a 15 s anneal ends, so a longer hold binds measurably more. In s.
forward_primerYesforward primer, 5'->3'.
reverse_primerYesreverse primer, 5'->3'.
primer_dimer_dgNofree energy of the forward-reverse primer dimer, kcal/mol, negative. NOT computed for you, and that is deliberate: the paper computes it with NUPACK and says why nothing simpler does - 'the nonspecific binding of P_for and P_rev into PD is not in perfect match', so nearest-neighbour formulas are the wrong class of tool. primer3's `thal`, which this repo does ship, is that class: on upstream's own C22 assay it returns -4.40 against upstream's -8.880. Pass the `thal` figure if it is the best you have and treat the answer as carrying that estimator's name, or pass a NUPACK value to reproduce the paper. In kcal/mol.
template_copiesNotemplate copies in the reaction at cycle 0. This is the quantity Cq is a readout OF, so sweeping it is how you get a standard curve out of this node. In copies.
denaturation_timeNoseconds at the denaturation temperature. It reaches the answer only through polymerase decay, so with `k_deg` at 0 it changes nothing. In s. Advanced.
forward_primer_molarNoforward primer concentration, mol/L (450 nM in upstream's assay). In M. Advanced.
reverse_primer_molarNoreverse primer concentration, mol/L (460 nM in upstream's assay). In M. Advanced.
annealing_temperatureNoannealing temperature, °C. Every binding constant in the model is evaluated here, so this is the single knob that moves the whole curve rather than scaling it. In °C.

Output Schema

NameRequiredDescription
cqYesthe predicted Cq, as a whole cycle number - upstream reads it as the cycle maximising the curve's SECOND derivative, so it is not interpolated and never fractional
notesYeswhat the run wants said about itself, in the panel's own words
plateauYesthe final cycle's reading - what the curve levels off at, capped by the probe you put in
curvePlotYesthe predicted amplification curve as a plot, one point per cycle
estimatorsYeswhich model produced each quoted quantity, so nothing here is read as upstream's when it is ours (§10 r11)
fluorescenceYesthe predicted curve: one reading per cycle, in mol/L of cleaved probe
probeConsumedYesfraction of the probe cleaved by the last cycle. Near 1 the plateau is probe-limited and the Cq is still trustworthy; well under it something else stopped the reaction

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, yet the description adds substantial behavioral context: the SINGLEPLEX scope limit, the 13-species/4-phase/stiff-ODE model internals, the explicit provenance caveats that primer-dimer dG is upstream's NUPACK value and that association rate constants are one assay's fitted values rather than physical constants.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose before the model internals and provenance caveats. It is dense and em-dash-heavy for a 17-parameter tool, but most sentences earn their place by carrying scope or provenance information rather than restating the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, return values need not be explained, and the annotations cover the safety profile. The description completes the picture with scope limits, model basis, and the caveats an agent must carry when quoting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 17 parameters is already documented in the schema itself, which sets the baseline at 3. The description reinforces key parameter caveats (primer-dimer dG provenance, fitted rate constants) but adds little parameter syntax or meaning beyond what the schema already supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Predict the amplification curve ... and the Cq read off it' from assay sequences and thermocycling programme. It immediately differentiates itself from sibling analysis tools by declaring 'a forward simulation, not a fit to data', which distinguishes it from call_cq/bootstrap_cq-style tools without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when it applies: it is SINGLEPLEX, one target per run, needs the assay's own sequences plus a thermocycling programme, and is a TaqMan not a SYBR simulator. It does not, however, explicitly name alternative siblings (e.g. call_cq for measured data) or state when-not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

size_fragmentsA
Read-only
Inspect

Size the peaks of a fragment-analysis run (.fsa / .hid) against its own size standard, and hand them on as lengths in bases. A fragment run carries no sequence at all — dye channels and a ladder — so this is the node that turns one into numbers a pipeline can act on: allele sizes, a peak table, and the ladder's own measured accuracy beside them.

NameRequiredDescriptionDefault
kitNoname each peak's locus and allele from a marker kit's own ladder definition. Left unset the node reports sizes, which is a complete measurement — a genotype needs a kit. Values: none (No kit — sizes only), file (A kit definition in this project), cordisplus (COrDIS Plus), cofiler (Cofiler), geneprint10 (GenePrint 10), globalfiler (GlobalFiler), identifilerlessils250 (Identifiler Less ILS250), identifilerpluslessils250 (IdentifilerPlus Less ILS250), identifilerplus (IdentifilerPlus), identifiler (Identifiler), microreaderyprime (Microreader Y Prime), minifiler (Minifiler), ngmselect (NGMSElect), ngm (NGM), niddkfragilex1 (NIDDKFragileX1), netbioflexplex (NetBio_FlexPlex), ppfusion6c (PowerPlex Fusion 6C), ppfusion-v2-6 (PowerPlex Fusion (v2.6)), ppfusion (PowerPlex Fusion), ppgeneprint24 (PowerPlex GenePrint24), pplexy23-v2-6 (PowerPlex Y23 (v2.6)), pplexy23 (PowerPlex Y23), powerplex1-2 (PowerPlex 1.2), powerplex16 (PowerPlex 16), powerplex18d-v2-6 (PowerPlex 18D (v2.6)), powerplex18d (PowerPlex 18D), powerplex21-v2-6 (PowerPlex 21 (v2.6)), powerplex21 (PowerPlex 21), powerplexs5 (PowerPlexS5), powerplexy (PowerPlex Y), powerplex-esi16-v2-6 (PowerPlex ESI16 (v2.6)), powerplex-esi16 (PowerPlex ESI16), powerplex-esi17-v2-6 (PowerPlex ESI17 (v2.6)), powerplex-esi17 (PowerPlex ESI17), powerplex-esx16-v2-6 (PowerPlex ESX16 (v2.6)), powerplex-esx16 (PowerPlex ESX16), powerplex-esx17-v2-6 (PowerPlex ESX17 (v2.6)), powerplex-esx17 (PowerPlex ESX17), profilerplus (ProfilerPlus), q-investigator24plex (QiagenInvestigator24plex), q-investigatorargusx12 (QiagenArgusX12), q-investigatorargusx12-qs (QiagenArgusX12_QS), ryanclarkecannabis (Cannabis), sefilerplus (SEfilerPlus), sgmplus (SGM Plus), yfilerplus (Yfiler Plus), yfiler (Yfiler), iplexstrliz500less250 (iPLEXSTRLIZ500less250), iplexstr (iPLEXSTR).none
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
methodNothe sizing curve. Local methods use the standard fragments nearest each peak and are the more accurate on a real ladder; the global reciprocal fit is less affected by one standard fragment running anomalously. Applied Biosystems, DNA Fragment Analysis by Capillary Electrophoresis, Ch. 5. Values: local-southern (Local Southern), global-southern (Global Southern), least-squares-2 (Least squares (2nd order)), least-squares-3 (Least squares (3rd order)), cubic-spline (Cubic spline).local-southern
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich fragment file to read: its name (`ladder.fsa`) or its project file id. A file id is project-specific, so a template ships this unset.
kit_fileNowhich kit definition in this project, by file name or file id — for a kit this build does not bundle, which is the ordinary case for a regional or in-house panel. An OSIRIS `*_LadderInfo.xml`. Left empty when the project holds exactly one, it is used. Only read when `kit` is `file`. Only applies when kit is file.
max_sizeNoignore peaks sized above this. In bases.
min_sizeNoignore peaks sized below this. In bases.
thresholdNominimum peak height, in the channel's own units.
ladder_dyeNowhich dye carries the size standard. Left unset it is MEASURED, by matching the standard's own scans against each channel's peaks — the copy of the table in the file says nothing about which channel it ran in. Advanced.
ladder_runNoan ALLELIC LADDER of the same kit, in this project, to call against instead of the kit file's nominal sizes: its name (`identifiler-ladder.fsa`) or its file id. A kit's sizes are the manufacturer's own reference run, and yours reads them systematically long or short by length — measured on the bundled pairs, a ladder sits 0.27 bases from nominal at 175-200 and 1.40 at 300-325, and the sample beside it is off by the same amount, so comparing the two cancels what comparing to the table does not. Graded on the published 9947A profile over four kits: 24 of 42 loci exact against nominal, 35 of 44 against the ladder. A locus whose ladder does not produce all its declared alleles keeps its nominal sizes and says so rather than being labeled partly. Only applies when kit is file or cordisplus or cofiler or geneprint10 or globalfiler or identifilerlessils250 or identifilerpluslessils250 or identifilerplus or identifiler or microreaderyprime or minifiler or ngmselect or ngm or niddkfragilex1 or netbioflexplex or ppfusion6c or ppfusion-v2-6 or ppfusion or ppgeneprint24 or pplexy23-v2-6 or pplexy23 or powerplex1-2 or powerplex16 or powerplex18d-v2-6 or powerplex18d or powerplex21-v2-6 or powerplex21 or powerplexs5 or powerplexy or powerplex-esi16-v2-6 or powerplex-esi16 or powerplex-esi17-v2-6 or powerplex-esi17 or powerplex-esx16-v2-6 or powerplex-esx16 or powerplex-esx17-v2-6 or powerplex-esx17 or profilerplus or q-investigator24plex or q-investigatorargusx12 or q-investigatorargusx12-qs or ryanclarkecannabis or sefilerplus or sgmplus or yfilerplus or yfiler or iplexstrliz500less250 or iplexstr.
lane_standardNothe internal lane standard this run used, by its name (`ABI-LIZ-600-60-TO-460`, `Promega-ILS-600`, …). Only read when the FILE records no size standard of its own, which is every 3500 `.hid`: there the ruler has to be named because it was never written down. A `.fsa` carries its own table, which is a measurement of that run and always wins. NCBI OSIRIS's library, 133 standards across 24 families.
allele_toleranceNohow far a peak may sit from a ladder allele and still be called it. Above half the repeat unit (4 bases for most STR loci) a peak reaches two alleles and is reported as ambiguous rather than guessed. In bases. Only applies when kit is file or cordisplus or cofiler or geneprint10 or globalfiler or identifilerlessils250 or identifilerpluslessils250 or identifilerplus or identifiler or microreaderyprime or minifiler or ngmselect or ngm or niddkfragilex1 or netbioflexplex or ppfusion6c or ppfusion-v2-6 or ppfusion or ppgeneprint24 or pplexy23-v2-6 or pplexy23 or powerplex1-2 or powerplex16 or powerplex18d-v2-6 or powerplex18d or powerplex21-v2-6 or powerplex21 or powerplexs5 or powerplexy or powerplex-esi16-v2-6 or powerplex-esi16 or powerplex-esi17-v2-6 or powerplex-esi17 or powerplex-esx16-v2-6 or powerplex-esx16 or powerplex-esx17-v2-6 or powerplex-esx17 or profilerplus or q-investigator24plex or q-investigatorargusx12 or q-investigatorargusx12-qs or ryanclarkecannabis or sefilerplus or sgmplus or yfilerplus or yfiler or iplexstrliz500less250 or iplexstr. Advanced.
min_peak_spacingNotwo maxima closer than this in one channel are one peak with a noisy top rather than two fragments: the separation is by length and no two fragments differ by less than one base. The taller is kept. 0 reports every maximum the detector finds. In bases. Advanced.
pullup_thresholdNoa peak whose top sits inside the saturated top of a taller peak in ANOTHER dye, at or below this fraction of it, is named pull-up rather than called. Omitted, the kit's own published sample value from NCBI OSIRIS (0.2 for most kits; off where OSIRIS publishes none). 0 disables it. Only applies when kit is file or cordisplus or cofiler or geneprint10 or globalfiler or identifilerlessils250 or identifilerpluslessils250 or identifilerplus or identifiler or microreaderyprime or minifiler or ngmselect or ngm or niddkfragilex1 or netbioflexplex or ppfusion6c or ppfusion-v2-6 or ppfusion or ppgeneprint24 or pplexy23-v2-6 or pplexy23 or powerplex1-2 or powerplex16 or powerplex18d-v2-6 or powerplex18d or powerplex21-v2-6 or powerplex21 or powerplexs5 or powerplexy or powerplex-esi16-v2-6 or powerplex-esi16 or powerplex-esi17-v2-6 or powerplex-esi17 or powerplex-esx16-v2-6 or powerplex-esx16 or powerplex-esx17-v2-6 or powerplex-esx17 or profilerplus or q-investigator24plex or q-investigatorargusx12 or q-investigatorargusx12-qs or ryanclarkecannabis or sefilerplus or sgmplus or yfilerplus or yfiler or iplexstrliz500less250 or iplexstr. Advanced.
stutter_thresholdNothe same test one repeat below rather than one base. 0.15 is OSIRIS's own StutterThreshold default, and the repeat unit is read off each locus's own ladder rather than typed in. 0 disables it. Only applies when kit is file or cordisplus or cofiler or geneprint10 or globalfiler or identifilerlessils250 or identifilerpluslessils250 or identifilerplus or identifiler or microreaderyprime or minifiler or ngmselect or ngm or niddkfragilex1 or netbioflexplex or ppfusion6c or ppfusion-v2-6 or ppfusion or ppgeneprint24 or pplexy23-v2-6 or pplexy23 or powerplex1-2 or powerplex16 or powerplex18d-v2-6 or powerplex18d or powerplex21-v2-6 or powerplex21 or powerplexs5 or powerplexy or powerplex-esi16-v2-6 or powerplex-esi16 or powerplex-esi17-v2-6 or powerplex-esi17 or powerplex-esx16-v2-6 or powerplex-esx16 or powerplex-esx17-v2-6 or powerplex-esx17 or profilerplus or q-investigator24plex or q-investigatorargusx12 or q-investigatorargusx12-qs or ryanclarkecannabis or sefilerplus or sgmplus or yfilerplus or yfiler or iplexstrliz500less250 or iplexstr. Advanced.
require_resolvableNoleave a peak unnamed when the neighboring allele is closer than twice THIS RUN's own sizing error at that length, instead of naming the nearest. Off by default: the error is measured with each size-standard fragment withheld, which is harsher than sizing a peak with all of them present, so in a sparsely anchored region it is pessimistic. On a run whose standard has a wide gap it is what stops a confident wrong allele; on an evenly anchored one it changes nothing. Every call carries the number either way.
adenylation_thresholdNoa peak within one base of a taller one in the same locus, below this fraction of its height, is an incompletely adenylated shoulder of it rather than an allele. 0.3333 is NCBI OSIRIS's own AdenylationThreshold default. 0 calls every peak. Only applies when kit is file or cordisplus or cofiler or geneprint10 or globalfiler or identifilerlessils250 or identifilerpluslessils250 or identifilerplus or identifiler or microreaderyprime or minifiler or ngmselect or ngm or niddkfragilex1 or netbioflexplex or ppfusion6c or ppfusion-v2-6 or ppfusion or ppgeneprint24 or pplexy23-v2-6 or pplexy23 or powerplex1-2 or powerplex16 or powerplex18d-v2-6 or powerplex18d or powerplex21-v2-6 or powerplex21 or powerplexs5 or powerplexy or powerplex-esi16-v2-6 or powerplex-esi16 or powerplex-esi17-v2-6 or powerplex-esi17 or powerplex-esx16-v2-6 or powerplex-esx16 or powerplex-esx17-v2-6 or powerplex-esx17 or profilerplus or q-investigator24plex or q-investigatorargusx12 or q-investigatorargusx12-qs or ryanclarkecannabis or sefilerplus or sgmplus or yfilerplus or yfiler or iplexstrliz500less250 or iplexstr. Advanced.
include_ladder_channelNoalso report the size standard's own peaks. They are the ruler, so they are excluded by default. Advanced.

Output Schema

NameRequiredDescription
runYeswhat the FILE says about itself: sample, instrument, polymer, dye names, scan count. Not the channels, which cannot ride a wire
peaksYesevery sized peak: size in bases, dye, height, scan, and whether it saturated
sizesYesjust the lengths in bases, ascending — the list a downstream gate reads
allelesYeseach peak's locus and allele under the chosen kit, with the ones that could not be named and WHY. Null when no kit was named
accuracyYesthis run's own sizing error in bases, measured by leaving each standard fragment out and sizing it from the others. A difference smaller than this is not one the run can resolve
genotypeYesthe alleles called per locus — the readout a downstream step compares. Null when no kit was named
peakCountYeshow many peaks were sized
sizeStandardYesthe ladder the sizes rest on: its fragments, the channel it was found in, and how that channel was chosen
lane_standard_fitYeshow a NAMED lane standard was fitted, when one was used: the peaks it matched, the correlation it reached and the threshold that had to be cleared, so a caller can see why the sizes are trusted. Null for a run whose file records its own standard
ladder_calibrationYeswhen a ladder run was named: which loci it labeled, at what spacing correlation, which it refused and why, and how many alleles were re-expressed in this instrument's own sizes. Null when the kit's nominal sizes were used

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that the output includes allele sizes, a peak table, and the ladder's measured accuracy, plus the fact that no sequence is present. It does not mention the size-standard dependency for .hid runs (that only surfaces in lane_standard) or any failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and the scope. The second sentence's 'turns one into numbers a pipeline can act on' is slightly rhetorical, but the enumeration of outputs earns its space. No padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, and 19 parameters are fully documented in-schema. The description covers purpose and input nature, but omits routing guidance relative to the trace/sequence siblings, which is the one gap for a tool this complex.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter descriptions are unusually rich (kit enums, method curve tradeoffs, ladder_run accuracy figures). The main description adds no parameter-level meaning, so the baseline 3 is correct when the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Size the peaks of a fragment-analysis run (.fsa / .hid)') and names the input format. The clause 'A fragment run carries no sequence at all — dye channels and a ladder' distinguishes it from the sequencing-trace siblings (call_bases_from_trace, load_trace, trim_trace) without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case ('the node that turns one into numbers a pipeline can act on') but never names an alternative tool or states when NOT to use it. Guidance is implied rather than explicit; a sibling like call_bases_from_trace is never referenced, so routing must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solve_dilutionA
Read-only
Inspect

Solve C₁V₁ = C₂V₂ for whichever of the four quantities is left empty (stock concentration, stock volume, final concentration, final volume), each in its own unit: molar (M to fM), mass per volume (mg/mL to ng/mL), fold (X) or percent. Returns all four, the fold and the diluent volume to add. Refuses a 'dilution' that would raise the concentration, and two concentrations of different dimensions.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
final_volumeNofinal volume (V₂). Leave exactly one of the four quantities empty: that one is calculated.
stock_volumeNostock volume (V₁). Leave exactly one of the four quantities empty: that one is calculated.
final_volume_unitNothe unit of the final volume, given or solved.mL
stock_volume_unitNothe unit of the stock volume, given or solved.µL
final_concentrationNofinal concentration (C₂). Leave exactly one of the four quantities empty: that one is calculated.
stock_concentrationNostock concentration (C₁). Leave exactly one of the four quantities empty: that one is calculated.
final_concentration_unitNothe unit of the final concentration, given or solved.µM
stock_concentration_unitNothe unit of the stock concentration, given or solved.mM

Output Schema

NameRequiredDescription
foldYesC₁/C₂, how many times the stock is diluted
unitYesthe solved quantity's unit
valueYesthe solved quantity, in its own unit
solvedYeswhich quantity was solved, by its parameter name
diluentYesV₂ − V₁, the diluent to add, in V₂'s unit

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine behavior beyond that: it returns all four quantities plus the fold and the diluent volume to add, and it declares two input-validation failures. Missing is anything about numeric edge cases (zero volume, unit mismatch messages) but the disclosure is well above the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the equation and the solve rule, then units, then return payload, then refusals. No filler and no restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need little explanation, yet the description still summarizes them usefully. The gap is the nested _files/_subject record parameters, which the description never mentions at all — an agent gets no hint why a sequence record accompanies a dilution calculation. Everything else an agent needs to call it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns more by explaining the joint constraint across the four quantities and by making clear that each quantity carries its own independent unit, which is the one non-obvious semantic in a 10-parameter schema with four enums.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: solves C₁V₁ = C₂V₂ for whichever of the four quantities is left empty, naming each of them (stock concentration, stock volume, final concentration, final volume). It also enumerates the supported unit families and distinguishes itself from any generic calculator by its refusal rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operative usage rule ('for whichever of the four quantities is left empty') is stated up front, and two explicit when-not conditions are given: it refuses a dilution that would raise the concentration, and refuses two concentrations of different dimensions. It does not point at any sibling alternative (e.g. plan_master_mix), so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarize_rowsA
Read-only
Inspect

Reduce a whole TABLE column to one number — the largest band, the median guide score, the spread of a set of melting temperatures. This is what makes a CROSS-ROW check expressible: check_rows can only assert the same thing of every row, so "the largest fragment is at least twice the smallest" needed two summaries and a comparison and had nowhere to come from. Name a group_field and it summarizes each group instead of the whole table (the mean product size per template), emitting a table a gate can then check group by group; pick a pairwise operation and it relates two columns of the same rows.

NameRequiredDescriptionDefault
trimNothe fraction to drop from EACH end before averaging, 0-0.5. datamash's own bound: 0.5 keeps only the middle value. Only applies when operation is trimmean.
fieldNowhich field of each row to reduce (e.g. `size`, `score`). Leave empty when the rows are plain numbers; a tuple row is indexed by number, so `0` is the first column.
itemsYesthe rows to summarize. Wire a json/list output (bands, guides, assays, amplicons).
labelNowhat this summary IS, in your words. It becomes the message the run reports.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
operationNowhich summary to take. The vocabulary is GNU datamash's, so a number here is the number `datamash <op>` gives for the same column. The last four relate TWO columns and need a `second_field`. Values: sum (sum), min (minimum), max (maximum), absmin (smallest by magnitude), absmax (largest by magnitude), range (range (max − min)), count (count of values), first (first value), last (last value), mode (most common value), antimode (least common value), unique (the distinct values, sorted), collapse (every value, in order), countunique (count of distinct values), mean (mean), geomean (geometric mean), harmmean (harmonic mean), trimmean (trimmed mean), median (median), q1 (lower quartile), q3 (upper quartile), iqr (interquartile range), perc (percentile), pstdev (standard deviation (population)), sstdev (standard deviation (sample)), pvar (variance (population)), svar (variance (sample)), ms (mean square), rms (root mean square), mad (median absolute deviation, scaled), madraw (median absolute deviation, unscaled), sskew (skewness (sample)), pskew (skewness (population)), skurt (excess kurtosis (sample)), pkurt (excess kurtosis (population)), jarque (Jarque–Bera normality p-value), dpo (D'Agostino–Pearson normality p-value), scov (covariance (sample)), pcov (covariance (population)), spearson (Pearson correlation (sample)), ppearson (Pearson correlation (population)).max
percentileNowhich percentile to take, 0–100. In %. Only applies when operation is perc.
group_fieldNosplit the rows by this field first and summarize each group: `template` on a multiplex screen, `strand` on a guide table. Leave empty to summarize the whole table.
second_fieldNothe second column for the pairwise operations, the one this field is related TO (e.g. `gc` against `size`). Only applies when operation is scov or pcov or spearson or ppearson.

Output Schema

NameRequiredDescription
usedYeshow many of those rows actually carried a number. Lower than `count` means the column has gaps, and the summary says so rather than implying it read them all
countYeshow many rows went into it: a summary of three bands and a summary of thirty are different claims
valueYesthe summary itself. Wire it into a gate's `value` or its `against`; with a `group_field` this is the first group's value, and `groups` is the table you want
groupsYesone row per group (`{ group, value, count, used }`) when a `group_field` is set. Wire it into `check_rows` to gate every group at once
numberYesthe same answer as a number, so it can drive a numeric port directly. Absent for the text summaries (`first`, `unique`, …)
messageYeswhat was summarized, in words
groupCountYeshow many distinct groups the split found. Absent when nothing was grouped — an ungrouped summary has no group count, and a 0 would read as one

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description usefully adds that a grouped summary emits a table a downstream gate can check group-by-group, but omits error behavior, empty/tuple row handling, and any limits beyond what the schema notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core operation is front-loaded, but the middle sentence is discursive ('had nowhere to come from') and reads like motivation rather than instruction. The grouped/pairwise modes are tacked on as a long semicolon-chained clause, reducing scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with an output schema, the description covers whole-table, grouped, and pairwise modes, which are the key mode distinctions an agent needs. It leaves output shape and `label`/`trim`/`percentile` conditional coupling to the schema, which is acceptable given 100% coverage and a defined output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum fully documents every operation, so the schema does the heavy lifting. The description only adds conceptual framing around `group_field` and pairwise operations, which is already spelled out in the schema; baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('reduce a whole TABLE column to one number') with concrete examples (largest band, median guide score, melting temperature spread). It explicitly positions itself against the sibling `check_rows`, explaining what that tool cannot do, so an agent can distinguish them 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (`check_rows`) and the condition that selects this tool, and gives a second usage mode via `group_field` with a concrete example (mean product size per template). It does not enumerate when NOT to use it or cover other aggregation-adjacent siblings like `filter_items` or `check_value`, so it falls short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

survey_off_targetsA
Read-only
Inspect

Count every guide's off-target sites by mismatch class across one sequence, in one pass — the question that comes BEFORE opening any single guide's site table: which of these spacers is worth looking at. Returns counts and the aggregate specificity per spacer, never the sites themselves, so a few hundred spacers cost a few hundred rows rather than a few hundred thousand.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
spacersYesthe protospacers to count — wire the spacers out of a design run, or list them.
subjectNothe sequence to search — wire a record or name a library document; leave unset to search the open record.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
circularNocount across the origin as well. Advanced.
nucleaseNowhich nuclease's PAM and geometry to use. Values: SpCas9 (SpCas9: NGG (3')), SpCas9-NG (SpCas9-NG: NG (3')), SpG (SpG: NGN (3')), SpRY (SpRY: NRN (3')), xCas9 (xCas9: NG (3')), SaCas9 (SaCas9: NNGRRT (3')), SaCas9-KKH (SaCas9-KKH: NNNRRT (3')), AsCas12a (AsCas12a: TTTV (5')), LbCas12a (LbCas12a: TTTV (5')), enAsCas12a (enAsCas12a: TTTV (5')).SpCas9
dna_bulgeNoextra bases in the DNA a site may carry. 0 counts mismatches only. In nt. Advanced.
rna_bulgeNoextra bases in the guide a site may carry. Same envelope as `dna_bulge`. In nt. Advanced.
max_mismatchesNohow many mismatches a site may carry and still be counted. Every row is this many classes wide plus the exact one, so the rows line up.

Output Schema

NameRequiredDescription
countedYeshow many distinct spacers were counted
skippedYesspacers that could not be counted, each with the reason — never dropped in silence
spacersYesone row per spacer: its counts by mismatch class, its total, its off-target count and its aggregate MIT/CFD specificity within the searched sequence
cleanestYesthe spacer with the fewest off-target sites (ties broken by the higher CFD specificity) — empty when nothing could be counted
searchedYesthe sequence the counts are against, which is what makes them readable later

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, non-destructive, non-open-world, so the description need not re-state safety. It earns credit by disclosing output behavior the annotations don't: counts and aggregate specificity are returned rather than individual sites, and row cost scales with spacer count rather than site count. It adds no auth, rate-limit, or failure-mode context, so it stops short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose and the workflow hook, then a value/scale rationale. The prose is dense with em-dashes but every clause contributes; no repetition or filler to trim beyond minor tightening.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with an output schema and full annotation coverage, the description supplies what the structured fields cannot: the aggregate-vs-site distinction and the triage framing. Remaining parameter and return-format details are legitimately carried by the 100%-covered schema and output schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all nine parameters (spacers, subject, nuclease, bulges, max_mismatches, circular) are already documented in the schema at that baseline. The description's phrase 'by mismatch class' loosely gestures at max_mismatches but adds no syntax, defaults, or format meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — counting every guide's off-target sites by mismatch class across one sequence — and immediately differentiates the tool's output scope from the per-guide site table ('never the sites themselves'). An agent can tell this apart from the site-listing sibling 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Frames the tool as 'the question that comes BEFORE opening any single guide's site table: which of these spacers is worth looking at', which is an explicit when-to-use signal tied to a triage workflow. It does not name the alternative tool (e.g. search_off_targets) or state exclusions, keeping it just short of fully explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

target_decoy_qvaluesA
Read-only
Inspect

False discovery rate and q-values for peptide-spectrum matches by target-decoy competition (validated against pyteomics): give each match's score and whether it hit a decoy; returns every match's q-value, the whole set's FDR, and how many targets pass a q-value threshold. Supports the +1 and finite-sample corrections of Levitsky et al. 2017.

NameRequiredDescriptionDefault
ratioNodecoy-to-target database size ratio.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
scoresYesone score per match.
formulaNo1: decoys / targets. 2: (decoys + estimated false targets) / all matches.
isDecoyYesone flag per match: true when it is a decoy hit.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
thresholdNoq-value cut-off for the accepted count.
correctionNo0 none; 1 the +1 correction; 2 finite-sample expectation; a value in (0, 1) is a confidence level.
higherIsBetterNotrue for scores like HyperScore; false for e-values and PEPs.

Output Schema

NameRequiredDescription
qYesq-value per match, in input order
fdrYesFDR of the whole set
decoysYeshow many decoy matches were scored; the FDR estimate stands on this count
targetsYeshow many target matches were scored
acceptedYestarget matches at or under the q-value threshold
thresholdYesthe q-value cut-off `accepted` was counted at

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a read-only, non-destructive, closed-world operation, so the safety profile is covered. The description adds provenance ('validated against pyteomics') and names supported corrections, but those correction details are already enumerated in the 'correction' parameter description, so the added behavioral context is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose before the input/output details. Slightly dense with parenthetical and citation, but every clause carries information and nothing is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with nested objects and an output schema, this is largely complete: purpose, required inputs, outputs, and the statistical variants are all touched. The only shortfall is that when/why to prefer this over sibling scoring/statistics tools is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates the two required inputs (scores, isDecoy) which the schema already documents, and adds no extra meaning for ratio, formula, threshold, correction, or higherIsBetter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: computing FDR and q-values for peptide-spectrum matches via target-decoy competition. This is clearly distinguishable from neighbors like score_spectrum, bayesian_protein_inference, and infer_proteins, and the parenthetical '(validated against pyteomics)' pins the semantics further.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent what inputs to supply ('give each match's score and whether it hit a decoy') and implies the workflow (post-scoring statistical filter), but never explicitly states when to use this versus alternatives such as score_spectrum or bayesian_protein_inference, nor any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tide_quantify_indelsA
Read-only
Inspect

Quantify a CRISPR edit from a pair of Sanger traces by TIDE (Brinkman et al.) — the abundance of each indel SIZE in the sequenced population, with a p-value per size class, the total editing efficiency, the goodness of fit, and the base composition of the +1 insertion. This is a different question from crispr_quantify_edits, not a cheaper version of it: ICE fits a mixture of whole proposed alleles and names them, TIDE fits the control trace shifted by n bases and so reports how much of the population shifted by n, whatever allele carried it. Run both on the same pair when the two disagree about how much was edited — that disagreement is information about the read.

NameRequiredDescriptionDefault
guideYesthe guide spacer, RNA accepted. TIDE decomposes around ONE break, so this is a single guide rather than a list — it is located in the control on either strand and the break is placed three bases 5-prime of the PAM.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
editedYesthe EDITED trace, by file name or id.
controlYesthe UNEDITED trace, by file name or id — every indel class is the control trace shifted, so this read IS the model.
seq_endNolast base of the READ to use, clamped down to the shorter of the two reads if it overruns. In bp.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
max_shiftNolargest indel size modeled, in both directions. One basis function is fitted per size from -max_shift to +max_shift, so this bounds what can be reported at all. In bp.
seq_startNofirst base of the READ to use. The start of a Sanger read is poor quality; upstream's own web app starts at 100. In bp.
window_endNolast base of the decomposed region. 0 = as far as the shorter read allows. In bp. Advanced.
p_thresholdNoan indel class is called PRESENT below this p-value. A 0% class and a non-significant class are different answers, which is why this is a knob rather than a constant. Advanced.
window_startNofirst base of the decomposed region. 0 asks the engine to place the window after the break itself, which is what upstream does when given no boundaries. In bp. Advanced.

Output Schema

NameRequiredDescription
indelsYesevery modeled size from -max_shift to +max_shift with its percentage, p-value and whether it cleared the threshold — INCLUDING the classes that did not, so the spectrum has a shape and not only peaks
reportYesthe whole result, including the window corrections upstream raises as warnings
rSquaredYesgoodness of fit of the whole decomposition. Every percentage below is already scaled by it, so a low fit shrinks the classes rather than flagging them
breaksiteYesthe base the break was placed at, three bases 5-prime of the PAM. Every window in the result is positioned against it
efficiencyYestotal editing efficiency: the R-squared-scaled signal in every non-zero indel class, 0-100. Not the same quantity as an ICE score — wire them into a comparison rather than treating either as the number
aberrantSignalYesthe four means TIDE's own quality checklist is read from: control and sample, before and after the break. A sample already aberrant BEFORE the break is a sequencing problem rather than an edit, and this is the pair of numbers that says so
insertionBasesYesbase composition of the +1 insertion as percentages in A, C, G, T order — the readout ICE cannot produce. Null when there is no significant +1 class, which is the common case and not an error; `insertionNote` then says why in upstream’s own words
significantIndelsYesthe classes that cleared p_threshold, excluding the unmodified class — what a gate should read

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuine behavioral context: TIDE fits the control trace shifted by n bases and decomposes around ONE break, and that the control read IS the model. It does not add auth/rate-limit or failure-mode detail, but for a read-only analysis tool this is solid added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the purpose before the ICE/TIDE contrast. Every clause carries information, though the em-dash chains make it slightly heavy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be re-explained, and the description still conveys the analytical model and the relation to the sibling tool. An agent has everything needed to call it correctly and interpret when it matters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself is highly descriptive (guide, seq_start, window, max_shift, p_threshold all explained). The description only supplementally reinforces the model concept behind the control parameter, so the schema does the heavy lifting and baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Quantify a CRISPR edit from a pair of Sanger traces by TIDE"), names the method, and enumerates the reported outputs (indel-size abundance, per-size p-value, editing efficiency, goodness of fit, +1 insertion composition). It explicitly distinguishes itself from the sibling crispr_quantify_edits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (ICE / crispr_quantify_edits) and the exact condition for considering both: "Run both on the same pair when the two disagree about how much was edited." It also explains why they answer different questions rather than just ranking one above the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trace_raw_signalA
Read-only
Inspect

The UNPROCESSED signal of a Sanger trace: how many scans the instrument recorded, where each channel's baseline sits, the peak raw value, and how many scans analysis discarded off the front as dye front. This separates an instrument problem from an analysis problem — a read whose analyzed trace looks wrong while its raw channels are clean was mis-analyzed, not mis-run, and a baseline spread far above the others names the channel responsible. ABIF only: SCF and ZTR store no raw channels, and this refuses rather than substituting the processed ones.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace file to read: its name (`read_F.ab1`) or its project file id. A file id is project-specific, so a template ships this unset.

Output Schema

NameRequiredDescription
baselineYesper-channel median raw sample (A/C/G/T) — the offset analysis subtracts
rawScansYesscans the instrument recorded, on its own time base
peakRawValueYesthe largest raw sample across all four channels
baselineSpreadYeshighest channel baseline minus lowest. A large spread is one dye channel sitting high, which analysis removes and a raw view shows
droppedFromFrontYesscans analysis discarded off the front (dye front and primer peak). Gate on it: an unusually long discard is a run that took a long time to resolve

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false. Beyond that, the description adds real behavioral context: the tool refuses for non-ABIF formats rather than silently returning processed channels, and the baseline-diagnostic semantics disclose what the output means. It doesn't mention error payloads or rate limits, so not 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, which is good, but the two sentences are dense and enumerate return fields at length. Much of that enumeration is redundant given an output schema exists, so some text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the ABIF-only constraint, an output schema, and full annotation coverage, the description gives an agent everything needed: what the signal is, why to read it, and the format refusal. It is nearly complete; only explicit parameter/file-selection guidance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents _files, _subject, and document fully. The description adds no parameter-level detail (e.g., how to specify the trace file, name vs project id). Baseline 3 applies when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it extracts the unprocessed raw signal of a Sanger trace, enumerating what that comprises (scan count, per-channel baselines, peak raw value, dye-front scans discarded). It clearly separates itself from processed-trace siblings like draw_trace/trim_trace by emphasizing 'UNPROCESSED'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the diagnostic situation: use it to separate an instrument problem from an analysis problem, and even describes the inference (clean raw channels but wrong analyzed trace = mis-analyzed). It also states a hard exclusion — ABIF only, SCF and ZTR store no raw channels — and says it refuses rather than substituting processed data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transform_treeA
Read-only
Inspect

Edit a tree that is already built — re-root it (at its midpoint, on an outgroup, or remove the root), prune taxa away or down to a set, ladderize it, or collapse branches that are too weakly supported or too short to believe. Pruning the TREE keeps the branch lengths estimated from the full alignment, which is a different answer from rebuilding without those taxa.

NameRequiredDescriptionDefault
taxaNotip labels — the outgroup for a re-root, or the taxa to keep/remove for a prune. Only applies when operation is reroot-outgroup or prune-keep or prune-remove.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
newickYesthe tree to edit — wire `newick` from build_tree, or paste one.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
positionNowhere along the outgroup edge the root lands, 0 = at the outgroup, 1 = at its sister. Only applies when operation is reroot-outgroup. Advanced.
ascendingNoladderize small clades first, rather than large. Only applies when operation is ladderize.
operationNowhat to do to the tree. Values: reroot-midpoint (Re-root at the midpoint), reroot-outgroup (Re-root on an outgroup), unroot (Remove the root (unroot)), prune-keep (Prune down to these taxa), prune-remove (Prune these taxa away), ladderize (Ladderize (presentation only)), collapse (Collapse weak or short branches).reroot-midpoint
max_lengthNocollapse any branch shorter than this (0 = do not). Only applies when operation is collapse.
min_supportNocontract any branch whose support is below this (0 = do not). Only applies when operation is collapse.

Output Schema

NameRequiredDescription
newickYesthe edited tree
tipCountYestips remaining — the number to check after a prune
statisticsYesstatistics RE-DERIVED for the edited tree, because rerooting or pruning changes them and the previous numbers beside a changed tree would be wrong. Absent for `ladderize`, which only reorders tips and changes no statistic

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with an in-memory transformation returning a new tree. Beyond that, it adds a genuinely useful behavioral insight — pruning preserves branch lengths estimated from the full alignment, a different answer from rebuilding — which the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the scope and operation list, and the second sentence adds the single most decision-relevant nuance. Dense but each clause maps to a real operation; the parentheticals slightly lengthen the first sentence but are warranted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the input schema covers all 9 parameters at 100%. The description supplies the one piece of judgment an agent needs (prune vs. rebuild) and enumerates the operation set, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the enum and per-operation parameter constraints (taxa, position, ascending, max_length, min_support) are already documented in the schema, establishing the baseline of 3. The prose enumerates the operations but largely mirrors the enum rather than adding parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Edit) on a specific resource (a tree that is already built) and enumerates the exact transformations: re-root (midpoint/outgroup/unroot), prune, ladderize, collapse. This cleanly separates it from the build_tree sibling (build vs. edit an existing tree).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"A tree that is already built" clearly implies build_tree must run first, and it distinguishes pruning from rebuilding without those taxa. It does not, however, explicitly name the alternative tool or state when-not to use it, so it stops short of full when/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

translate_sequenceA
Read-only
Inspect

Translate the subject DNA to protein (Biopython Bio.Seq.translate semantics). The SUBJECT is the selection when there is one, the named feature when feature is given, and the whole record otherwise — the region output says which, so never paste bases in to scope it.

NameRequiredDescriptionDefault
cdsNostrict CDS: require a length multiple of 3, a start codon and a terminal stop (errors otherwise). Advanced.
tableNoNCBI genetic-code table id (1 = standard).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
featureNotranslate this annotated coding feature by NAME instead of the selection (e.g. "ADH1"). A name the record does not annotate is refused with the names it does.
reverseNoread the region as the reverse complement. Stated explicitly this always wins; left out, the selection's or the feature's own strand decides. Advanced.
to_stopNostop at the first stop codon instead of emitting the stop symbol.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
lengthYesprotein length in residues
regionYeswhat was translated, and on which strand
proteinYesthe translated protein

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive), and the description adds behavioral context: Biopython translation semantics, how the subject is determined, and that the region output indicates scope. It does not cover error handling or return format beyond that, but the output schema handles returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, then the critical scoping rule. No wasted words, and the warning is placed at the end for emphasis.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich output schema, full parameter descriptions, and annotations, the description provides the missing usage warning and translation semantics. Nothing essential for correct invocation is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all parameters are well-documented in the schema; the description adds only the high-level subject logic, which is already reflected in the schema's _subject description. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Translate) and resource (subject DNA to protein), and specifies the direction, which distinguishes it from back_translate. The clarification of SUBJECT scoping (selection/feature/whole record) further differentiates it from tools requiring explicit sequence input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for how to use it: define the SUBJECT via selection or feature, and explicitly warns 'never paste bases in to scope it.' No when-not or alternative tools are named, so no exclusions, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tree_statisticsA
Read-only
Inspect

Describe a tree without rebuilding it: its shape statistics (tips, height, balance, the gamma statistic), the lineages-through-time curve, and the patristic distance matrix — the path lengths through the tree, which is what to compare against the alignment distances that built it.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
newickYesthe tree to describe — wire `newick` from build_tree, or paste one.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
lttYeslineages-through-time: the points of the curve and the coalescence times behind it
lttPlotYesthe lineages-through-time curve as a plot
tipCountYesnumber of tips
patristicYeslabels and the matrix of path lengths between every pair of tips
statisticsYestips, height, balance and the gamma statistic (with the reason when gamma is undefined for this tree)
patristicMapYesthe patristic distances as a heatmap

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds the useful behavioral note that it operates without rebuilding the tree and lists the computed artifacts, but says nothing about cost, tree-size limits, or handling of malformed/polytomous trees. Given annotations carry the safety burden, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence led by the verb, with the outputs enumerated before the closing rationale. It is dense but every clause carries content; the em-dash apposition slightly lengthens it without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% schema coverage, the description need not explain return values, and it still names the three output families helpfully. The one gap is that it never mentions the alternate _files/_subject record inputs, implying the tree must arrive as pasted or wired newick, which could mislead an agent holding a stored record.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents newick, _files and _subject in detail; the description only refers to 'a tree' generically. Baseline 3 is correct when structured fields do the heavy lifting and the description adds no format or wiring detail beyond them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('describe') and resource ('tree') and enumerates exactly what is produced: shape statistics (tips, height, balance, gamma), the lineages-through-time curve, and the patristic distance matrix. The phrase 'without rebuilding it' cleanly separates it from build_tree, and the enumerated outputs distinguish it from draw_tree/compare_trees.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool is framed as the way to inspect a tree you already have, and the closing clause hints the patristic matrix is what to compare against alignment distances. There is no explicit when-to-use/when-not guidance and no sibling named as an alternative for e.g. comparing trees or drawing them, so the agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tree_taxon_annotationsA
Read-only
Inspect

Read what a NeXML tree file says about each of its taxa: every annotation on every OTU (an NCBI taxon, a rank, a parent taxon), one row per annotation, plus how many distinct values each property takes. This is the tip data the phylogeny canvas draws as a strip beside the tips, where a value that recurs further down is a group the tree does not keep together.

NameRequiredDescriptionDefault
nexmlYesa NeXML document (the text of a .xml tree file).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.

Output Schema

NameRequiredDescription
countYesannotations read
propertiesYeseach annotated property with its count of distinct values
annotationsYesone row per annotation: otu id, taxon label, property and value, in document order

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: one row per annotation and an accompanying count of distinct values per property, which is output-shaping information the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action before the interpretive context. The closing clause about a recurring value being a group the tree does not keep together is domain framing that earns its place, though it is slightly ornate for a tool contract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and annotations cover safety. Given the nested _subject/_files parameters are already documented in the schema, what remains is adequate for the agent to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents nexml, _files, and _subject fully, and an output schema exists. The description adds no parameter syntax or format detail beyond calling nexml a .xml tree file, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: read taxon annotations from a NeXML tree file, extracting every annotation on every OTU plus distinct-value counts. It clearly distinguishes the extraction purpose from structural siblings like transform_tree or compare_trees, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the second sentence frames the result as tip data for the phylogeny canvas, which suggests when it is relevant. There is no explicit when/when-not guidance and no named alternative among the many tree tools (tree_statistics, compare_trees, export_tree).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trim_readsA
Read-only
Inspect

Trim sequencing adapters and low-quality ends off FASTQ reads before mapping, and report what was removed. This is cutadapt's algorithm: quality trimming is BWA's running-sum rule (not a threshold - a single bad base in a good tail is absorbed, a real decline is not), and the adapter is found by semiglobal alignment allowing errors, so a PARTIAL adapter at the very end of a read is caught where a substring search would miss it. Quality trimming runs FIRST and adapter removal second, which is cutadapt's own order and changes the result when a low-quality tail is also the start of an adapter. THE REPORT ATTRIBUTES EVERY REMOVED BASE TO THE STEP THAT REMOVED IT, because losing 30% of your bases to quality means a bad sequencing run and losing it to adapter means a short insert - different problems that one total cannot distinguish. It does not map anything and does not filter reads: a read trimmed to nothing is returned empty and counted, never silently dropped.

NameRequiredDescriptionDefault
readsYesthe reads to trim, as FASTQ - quality lines are required, because both halves of this need them.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
adapterNothe adapter sequence to remove. Unset means quality trimming only. Illumina TruSeq is AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC and Nextera is CTGTCTCTTATACACATCT.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
min_lengthNoreads shorter than this after trimming are COUNTED as too short, not removed - this tool does not filter. 0 reports none. Advanced.
min_overlapNoan adapter overlap shorter than this is ignored. Low values trim real bases by chance - at 1, a read ending in the adapter's first base is 'trimmed'. Advanced.
adapter_kindNowhich end the adapter sits at. A read running off the end of its insert hits the 3' adapter, which is why that is the default.three_prime
phred_offsetNoquality encoding: 33 for every modern FASTQ, 64 only for pre-1.8 Illumina. Advanced.
max_error_rateNoerrors allowed in the adapter match, as a fraction of the overlap. cutadapt's own default. Advanced.
quality_cutoff_backNoquality cutoff for the 3' end, where quality decays with cycle number. 0 is off; 20 is the usual choice. NOT a threshold on individual bases - see the description.
quality_cutoff_frontNoquality cutoff for the 5' end, which fails for different reasons than the 3' end and so takes its own number. 0 is off, and off is the usual answer. Advanced.

Output Schema

NameRequiredDescription
reportYeswhat was removed and by which step: bases before and after, the two attributed counts, reads with an adapter, reads emptied and reads left too short
readsEmptiedYesreads trimmed to nothing at all - a different alarm from 'too short', because it usually means the read was all adapter
trimmedFastqYesthe trimmed reads as FASTQ, ready for `map_reads`
readsWithAdapterYeshow many reads carried the adapter - the number that says whether your insert size is shorter than your read length
basesRemovedByAdapterYesbases removed by adapter trimming alone
basesRemovedByQualityYesbases removed by quality trimming alone

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/non-destructive, yet the description adds substantial behavioral detail: the cutadapt running-sum quality rule, semiglobal adapter alignment that catches partial 3' adapters, the quality-then-adapter ordering and why it matters, and per-step base attribution in the report. It also discloses the non-obvious non-filtering behavior (a read trimmed to nothing is returned empty and counted, not dropped).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and every subsequent sentence carries behavioral substance rather than filler. The prose is dense and occasionally long-winded (the ALL-CAPS emphasis on per-step attribution is heavy), but nothing is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter transformation tool with nested objects and a 100%-covered schema, the description completes the picture: it explains the algorithm, the ordering, the reporting semantics, and the explicit non-goals. An output schema exists, so return structure need not be spelled out, and the description still covers what the report contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, and the description lifts this by explaining the algorithm that gives the parameters meaning: it clarifies quality_cutoff_back is not a per-base threshold, and that partial adapter detection is what max_error_rate/min_overlap govern. This adds interpretive value beyond the field text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Trim sequencing adapters and low-quality ends off FASTQ reads') plus the workflow position ('before mapping') and output ('report what was removed'). This clearly distinguishes it from siblings like demultiplex_reads, align_read, and map_reads without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'before mapping' places the tool in the workflow and the closing sentence partitions scope by stating it does not map and does not filter, which routes the agent correctly. It stops short of explicitly naming sibling alternatives (e.g. demultiplex_reads) or giving when-not conditions, so it is clear but not fully channelled.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trim_traceA
Read-only
Inspect

Trim a Sanger read's low-quality ends, by either of the two methods that answer different questions: the instrument's own Mott record as written into the file, or a sliding mean-Phred window computed here. Returns the kept interval as 1-based inclusive bounds, and the mean quality of what it KEPT beside the mean of what it DISCARDED — the pair that says whether the trim was worth making, because a trim whose discarded ends score no worse than the bases it left has shortened the read for nothing.

NameRequiredDescriptionDefault
min_qNothe mean Phred the window has to hold for a bound to stop walking inward.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
methodNoauto = the file's own Mott record when it has one and the sliding window when it does not; mott = the instrument's record, which SCF and ZTR never carry; window = always compute it here.auto
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
documentNowhich trace file to read: its name (`read_F.ab1`) or its project file id. A file id is project-specific, so a template ships this unset.
win_sizeNobases in the sliding window, when the window method runs.

Output Schema

NameRequiredDescription
readingYesthe same sentence the editor shows for this run, generated from it
sequenceYesthe trimmed read, ready to align or verify
keptBasesYeshow many bases survived. Wire it into a gate: a read trimmed to nothing is not a read
methodUsedYeswhich one actually ran. `auto` and `mott` both answer `window` when the file carries no Mott record, and a pipeline that assumed otherwise trimmed on a threshold nobody chose
lastBaseKeptYes1-based inclusive
firstBaseKeptYes1-based inclusive, matching every trim readout in the editor
meanQualityKeptYesmean Phred over the kept interval
meanQualityDiscardedYesmean Phred over what was cut. Read it AGAINST the kept figure: if it is not lower, the trim removed nothing bad

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a non-destructive read-only operation. The description adds behavioral context beyond the annotations by explaining what the returned kept-interval and quality means imply, and why comparing discarded versus kept quality matters. It does not discuss auth, rate limits, or side effects, but none appear relevant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and is generally efficient. The second sentence is dense but earns its space by explaining how to interpret the returned quality pair; it avoids boilerplate repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with full schema coverage and an output schema, the description is largely complete: it explains the operation, the two methods, and the meaning of the result. The main remaining gap is decision guidance relative to sibling read-trimming tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the detailed meaning of min_q, method, win_size, document, _subject, and _files. The description restates the conceptual distinction between the mott and window methods but adds little parameter-specific detail beyond what the enum descriptions already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: trimming a Sanger read's low-quality ends. It also explains the two available methods, which is more than a tautology. It does not explicitly differentiate itself from the nearby sibling trim_reads, so it falls just 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool's use case — cleaning Sanger traces — and notes the two methods answer different questions, but it does not state when to choose this tool over trim_reads or other trace-consuming siblings, nor when to prefer mott versus window at a decision level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_gene_traitA
Read-only
Inspect

Put a hypothesis of the form "gene G is involved in trait T" through POPPER-style sequential falsification on two public tables, each test fixed in advance and run in a fixed order. (1) GTEx v8 expression: either G's co-expression across the 54 tissues with the trait's own gene(s), such as IL2 for IL-2 production, or G's expression in named tissues against its own elsewhere. (2) The GWAS Catalog: how many studies place an association inside G for traits in the named GWAS Catalog categories. Each p is G's rank among the 19,107 protein-coding genes GTEx measures, so it is exact under the null that G is just another gene, with no model of how expression or GWAS hits are distributed. Each p becomes an e-value (κ calibrator), the running product is the evidence, and testing stops at the first product above 1/α, which is POPPER's own sequential stop. Benchmarked on POPPER's TargetVal (Schmidt et al. 2022 CRISPR screens): it holds Type-I below α and has far less power than an agent writing its own tests, because two tables answer fewer questions; the result says which tests were run and what each could and could not show.

NameRequiredDescriptionDefault
geneYesthe hypothesis gene, as its current HGNC symbol (protein-coding).
alphaNothe level the sequential test stops and decides at: supported when the product of e-values exceeds 1/α.
kappaNoκ of the p-to-e calibrator e = κ·p^(κ−1). Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
tissuesNotissue test: GTEx tissue names where involvement implies higher expression, such as Whole Blood or Spleen.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
categoriesYesGWAS Catalog parent categories an involved gene's associations should fall in, such as Immune system disorder.
trait_genesNoco-expression: the trait's own gene(s) as HGNC symbols, such as IL2 for IL-2 production.
expression_testNowhich GTEx test: co-expression with the trait's own gene(s), or expression in named tissues against the gene's own elsewhere. One only, because both read GTEx and one table is one piece of evidence. Values: coexpression (Co-expression with the trait's gene), tissue (Expression in named tissues).coexpression

Output Schema

NameRequiredDescription
eYesthe stopped product of e-values: the evidence against "G is just another gene"
testsYesevery falsification test in its registered order: what it reads, its statistic, G's value, its rank among the genes and its p, and whether it was run before the stop
resultYesthe full result
nullRateYesthese settings' own Type-I rate: how many of the universe's genes, each taken as the hypothesis, the same test would support
supportedYeswhether the stopped product of e-values exceeds 1/α

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safety profile (readOnlyHint=true, openWorldHint=false, destructiveHint=false), and the description goes well beyond them: it discloses the fixed test order, exact rank-based p-values under a null, the p-to-e calibration and sequential stopping rule (product > 1/α), Type-I control, and the power caveat versus custom tests. It stops short of operational details such as failure modes or cost, but the behavioral disclosure is rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body is a single dense block of parenthetical-heavy statistical prose — including TargetVal benchmarking and power comparison — that is hard to parse and partially redundant with the schema. The content is not wasted, but the structure is less scannable than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a statistically complex tool with an output schema already present and 100% parameter description coverage, the description supplies the surrounding method context (two tables, sequential falsification, what the result reports) that an agent needs to interpret the call. It is largely complete, with only sibling routing and any prerequisite data assumptions left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including alpha, kappa, expression_test, tissues, trait_genes and categories. The description reinforces the meaning of alpha (stop at 1/α) and kappa (the calibrator), but adds little syntax or format detail the schema does not already carry, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource — putting a gene-trait hypothesis through POPPER-style sequential falsification on GTEx v8 expression and the GWAS Catalog — so the tool's function is unambiguous. It does not, however, distinguish itself from conceptually adjacent siblings such as discover_target_validation or rank_next_tests, so an agent must infer positioning 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: this is for testing 'gene G is involved in trait T' when GTEx co-expression/tissue and GWAS category evidence are the relevant tables. The description does contrast it weakly with 'an agent writing its own tests' (fewer questions answered, lower power), but there is no explicit when-to-use / when-not-to-use or named alternative tool, 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.

validate_workflowA
Read-only
Inspect

Would this workflow graph run? Returns the blocking errors — an unknown tool, a wire into a port that does not exist, a cycle — each naming the node and the port, without running anything.

NameRequiredDescriptionDefault
graphYesA workflow graph: nodes naming tools, wires carrying one node’s output into another’s input, and the two constructs a single tool call cannot express — `$whenExpression` (run this node only if…) and `scatter` (run it once per element of a list input, gathering every output into an array).
_filesNoThe project's files, standing in for the project open in the editor: each is one record reference (a `file`, `sample`, `accession` or named `sequence`). Every sequence record they hold becomes a library document a tool can name in its `sequences`/`parts`/`document` arguments (a multi-record file as `file · record`), and a tool reading a file by name (a trace, an alignment) finds it here.
_subjectNoThe record this call acts on, standing in for the document open in the editor. Exactly one of: `sequence`, `file`, `sample`, `accession`. This server holds no project, so a tool needing a subject gets it here or refuses by name.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. On top of that the description discloses that it returns 'the blocking errors' with each error naming the node and the port, and that nothing is executed — useful behavioral context beyond the annotations. It stops short of saying whether non-blocking warnings are reported or how the result is shaped.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the question the tool answers, followed by a compact em-dash list of error types. Every clause earns its place and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining the return: it states the tool returns blocking errors, each naming node and port. The very rich graph schema documents the input fully. The only gap is that the full shape of the response (beyond error naming) and treatment of warnings is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the graph/_files/_subject objects are exhaustively documented in the schema itself. The description adds no parameter-level detail (no mention of graph structure, _files, or _subject), so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource (validate a workflow graph) and frames the question the tool answers: 'Would this workflow graph run?' It also enumerates the exact failure classes it reports (unknown tool, wire into a nonexistent port, cycle), which cleanly separates it from run_workflow by the closing phrase 'without running anything.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without running anything' establishes the context — this is the pre-flight, non-executing check — which implies its relationship to run_workflow. However, it never names run_workflow as the alternative or states explicitly when a validation pass should precede execution, so the selection guidance is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

variant_call_summaryA
Read-only
Inspect

Summarize a variant call set the way bcftools stats does: records by class, transitions and transversions with their ratio, the twelve directed substitutions, indel lengths, per-contig counts, the FILTER tally, the QUAL range, and per-sample genotype counts. Reports what could NOT be counted rather than leaving a zero standing in for it, meaning a file whose genotypes were not parsed, and any genotype naming an allele its record never declares.

NameRequiredDescriptionDefault
fileNowhich call set in this project, by name. Unset, it is the project's only one, and it refuses rather than guessing when there is more than one.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
contigNosummarize ONE contig instead of the whole file, named as the file names it. The per-contig table is always over everything read; this narrows what everything else counts.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
pass_onlyNocount only records whose FILTER is PASS or unset. A Ts/Tv computed over unfiltered calls and one computed over passing calls are different measurements, and this is which one you asked for.

Output Schema

NameRequiredDescription
qualYesmin, max, median and the number of records stating no QUAL. Null when nothing stated one, which is not the same as a range of zero
tstvYests, tv and ratio over every ALT, and tsFirstAlt/tvFirstAlt/ratioFirstAlt over each site’s first ALT only. Both, because bcftools reports both and a multiallelic call set makes them differ
countsYesrecords, samples, and the class tallies: snps, mnps, indels, others, noAlts, multiallelicSites and multiallelicSnpSites. A site counts in every class its alleles carry, which is how bcftools counts them
filtersYesevery FILTER value seen with its count, including PASS and the unfiltered (`.`) tally: the two are different states and are counted apart
summaryYesthe call set in one sentence, generated from this run
indelPlotYessites per indel length (ALT minus REF), deletions left of zero and insertions right of it
per_contigYesrecords, snps and indels per contig, over everything read
per_sampleYesbcftools' PSC section per sample: refHom, nonRefHom, hets, transitions, transversions, indels, averageDepth, singletons, hapRef, hapAlt and missing
not_countedYeswhat this run could NOT count and why: `genotypesUnavailable` when the file's genotypes were not parsed (so per_sample is empty for a reason), and `badAlleleCalls` listing genotypes naming an allele their record never declares. Real bcftools stats exits on such a file rather than reporting per-sample numbers, so a non-empty list means per_sample has no bcftools counterpart to be compared against
indel_lengthsYesindel length (ALT minus REF) to the number of sites, sorted by length: bcftools' IDD section. Negative is a deletion
substitutionsYesthe twelve directed substitution types with their counts
substitutionMapYesthe twelve directed substitutions as a REF by ALT grid, the Summary tab’s bars as one picture; the diagonal is empty, since a base does not substitute for itself

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although annotations already state that the tool is read-only and non-destructive, the description adds substantial behavioral detail: it lists what statistics are reported and explains that uncountable items are reported rather than silently shown as zero, including missing genotype parsing and genotypes naming undeclared alleles. This goes well beyond safety annotations and gives the agent useful expectations about output and edge-case handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then adds one carefully placed caveat about uncountable values. Despite the long enumeration of reported statistics, every element serves to scope the summary output and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and full parameter documentation, the description is complete enough for correct tool selection and invocation. It explains the summary scope and reporting caveats without needing to duplicate return-value structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all five parameters, including the file default behavior, contig narrowing, and pass_only distinction. The description does not add parameter-specific meaning beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource (summarize a variant call set) and enumerates the exact statistics produced, tying the tool to the familiar bcftools stats behavior. This clearly distinguishes it from sibling tools such as read_variant_calls, apply_variant_call, or score_variant_effect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended use case clear—producing a bcftools-stats-style summary of a call set—but it does not explicitly say when to choose this over related sibling tools like read_variant_calls or discover_flag_rates. The usage context is implied rather than spelled out with alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

variant_consequencesA
Read-only
Inspect

Annotate every call in a VCF or BCF in this project against the transcripts of a GenBank reference: the Sequence Ontology term per transcript, Ensembl's IMPACT, HGVS c. and p., the CDS and protein positions, and the distance for an upstream, downstream or intronic call. Each call's most severe consequence is picked by Ensembl's own ranking. A symbolic allele, or a REF the reference does not carry at that position, is reported as not annotated rather than read against the wrong sequence. A CDS naming no /transl_table is read on the standard code, as INSDC specifies.

NameRequiredDescriptionDefault
fileNowhich call set in this project, by name. Unset, it is the project's only one, and it refuses rather than guessing when there is more than one.
limitNohow many calls to return in `calls`; the counts are always of all of them. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
offsetNothe coordinate the reference's FIRST base has in the call set's contig. Default 1, the reference is the whole contig; a region cut out of a genome sets where it was cut from.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
referenceNothe GenBank file the calls were made against, by name. Unset, every GenBank file in the project is a candidate: one is used for every call, several are matched to each call by its CHROM (accession or LOCUS).
min_impactNokeep only calls whose most severe consequence is rated at least this. Unset keeps every call.
up_down_stream_bpNohow far from a transcript a call still counts as upstream or downstream of it. SnpEff’s own default is 5,000; the window decides how many annotations each call gets. In bp.

Output Schema

NameRequiredDescription
callsYesone row per ALT allele: chrom, pos, ref, alt, the most severe term, its IMPACT, gene, transcript, HGVS c. and p., and why it was not annotated when it was not
by_termYeshow many calls have each most-severe term, over all of them
summaryYeswhat the set holds, generated from the annotation
annotatedYesalleles annotated
annotationsYesevery consequence of every returned call, one per transcript it reaches
not_annotatedYesalleles skipped, each with its reason in `calls`

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The read-only annotations already establish the safety profile, and the description adds meaningful behavioral detail: Ensembl ranking selects the most severe consequence, symbolic/REF-mismatch alleles are reported as not annotated, and CDS records without /transl_table use the standard code. These are substantive domain behaviors beyond what the annotations provide, though permission/performance context is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core operation and then adds only relevant behavioral details: output fields, severity ranking, edge-case handling, and genetic-code default. There is no filler, and each sentence contributes information an agent would need to interpret the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With eight parameters, nested objects, and an output schema, the description is complete enough for correct invocation: it explains the annotation behavior, reference handling, severity ranking, and edge cases. The main remaining gap is explicit routing versus sibling variant tools, but the output schema and 100% schema coverage fill most other gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents the eight parameters thoroughly. The description mentions concepts like the GenBank reference and upstream/downstream distance, but it does not add syntax, defaults, or parameter-specific guidance beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (annotate) and resource (every call in a VCF or BCF) and lists exactly what annotations are produced, making the operation clear. It does not explicitly name or contrast with sibling tools such as score_variant_effect or read_variant_calls, but the scope is still specific enough to distinguish it in practice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: annotate calls in a VCF/BCF against a GenBank reference. However, the description does not say when to choose this tool over alternatives, nor does it give explicit exclusions. The usage context is clear but not fully guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_constructA
Read-only
Inspect

Compare a sequencing RESULT against the construct you designed and say what differs, where, and what it lands in. Aligns the two, reports every substitution, indel and uncalled position, then maps each onto the design's features and ranks them by Ensembl's published consequence severity — so a pipeline can gate on 'nothing worse than synonymous' rather than on a bare difference count.

NameRequiredDescriptionDefault
matchNoalignment limit `match`, as the Verify panel's own slider sets it. Advanced.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
designYesthe construct you INTENDED — wire an upstream record or name a library document. Its features come with it, and they are what turns a difference into a consequence.
resultYeswhat actually came back from sequencing — wire a record or name a document.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
gap_openNoalignment limit `gapOpen`, as the Verify panel's own slider sets it. Advanced.
mismatchNoalignment limit `mismatch`, as the Verify panel's own slider sets it. Advanced.
word_sizeNoalignment limit `wordSize`, as the Verify panel's own slider sets it. Advanced.
gap_extendNoalignment limit `gapExtend`, as the Verify panel's own slider sets it. Advanced.
band_marginNoalignment limit `bandMargin`, as the Verify panel's own slider sets it. Advanced.
min_coverageNoalignment limit `minCoverage`, as the Verify panel's own slider sets it. Advanced.
confident_coverageNoalignment limit `confidentCoverage`, as the Verify panel's own slider sets it. Advanced.
min_result_fractionNoalignment limit `minResultFraction`, as the Verify panel's own slider sets it. Advanced.

Output Schema

NameRequiredDescription
reportYesthe whole verification, including the alignment frame and band
identityYespositions where design and result agree, over the aligned length, as a PERCENTAGE — 100 for an exact match, not 1
differencesYesevery difference with its 1-based position on the design and a one-line description
largeEventsYesstructural events — a dropped cassette or a duplicated span reads as one event here rather than as hundreds of substitutions
differenceCountYessubstitutions, insertions and deletions found — NOT counting positions the sequencer could not call
affectedFeaturesYesfeatures with a real difference, missing bases or uncalled positions — worst first
worstConsequenceYesthe most severe consequence term any affected feature carries, by Ensembl's published ranking — the one value a gate should read
uncalledPositionsYespositions the result could not call. Counted apart from differences on purpose: an uncalled base is not a mutation, and folding the two together reports a clean read as a damaged one

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this is a safe, non-destructive, closed-world read, so the description's job is to add behavioral context — and it does: it discloses that the tool aligns the two inputs, reports substitutions, indels and uncalled positions, maps them onto design features, and ranks by Ensembl consequence severity. What it does not say is anything about cost, runtime or sensitivity to the many alignment tuning sliders.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core comparison and free of filler, though the two sentences are long and heavily clause-stacked. The severity-gating rationale at the end is useful but slightly promotional in tone.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with a nested _subject object and an output schema, the description covers the input pairing, the analysis performed, and the ranking scheme, which is enough for correct invocation. It stops short of explaining how the advanced alignment sliders affect results or when to adjust them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter is documented in-schema, including the design/result distinction, so the baseline applies. The description reinforces the semantics of the two required inputs (intended construct vs. sequenced result) but adds no information about the eleven alignment-limit sliders beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and both operands — compare a sequencing RESULT against the designed construct — and names the outputs (what differs, where, what it lands in). It is distinguishable from bare alignment tools, but it never explicitly separates itself from nearby siblings such as compare_reads_to_reference or alignment_agreement, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the closing clause about a pipeline gating on 'nothing worse than synonymous' suggests the intended context, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many alignment/comparison siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_readA
Read-only
Inspect

Grade a sequencing read against a reference (✓ verified / ⚠ near / ~ partial / ✗ divergent) from an alignment.

NameRequiredDescriptionDefault
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
read_nameNowhat to call the read in the report row.read
target_lenYesreference length in bp. In bp.
aligned_refYesgapped reference (target) row.
target_nameNowhat to call the reference in the report row.reference
aligned_readYesgapped read (query) row.
near_coverage_pctNoreference coverage required to grade a read near. In %.
near_ungapped_pctNoungapped identity required to grade a read near — NOT the gap-inclusive `identity` output. In %.
verified_max_gapsNogaps tolerated in a verified alignment.
verified_coverage_pctNoreference coverage required to grade a read verified. In %.
verified_ungapped_pctNoungapped identity required to grade a read verified — NOT the gap-inclusive `identity` output. In %.

Output Schema

NameRequiredDescription
reportYesthe row that goes in the record: target, read, grade, ungapped identity, coverage, mismatches and indel events
resultYesthe full alignment result (matches, mismatches, gaps, identities)
statusYesthe grade: verified / near / partial / divergent
identityYesgap-inclusive identity % (BLAST convention)
mismatchesYesmismatch count
coveragePctYeshow much of the reference the read actually covers — a perfect identity over 20% of the target is not a verified clone
indelEventsYesinsertion/deletion EVENTS, not bases — one 12 bp deletion is one event

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is fully covered structurally. The description adds the grading vocabulary (verified/near/partial/divergent), which is real behavioral context, but it doesn't say what determines those grades, that the cutoffs are adjustable via the near_*/verified_* params, or how ties/boundary cases resolve.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the action first and the outcome legend compactly parenthesized. Nothing superfluous and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters, nested objects, and 9 grading-threshold knobs, the description is thinner than ideal: it never notes that the default thresholds can be relaxed/tightened, nor how the tool relates to the align/compare siblings that would normally produce the input. An output schema exists, so return-value explanation is legitimately absent, which keeps this at minimum-viable rather than poor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already explains every parameter, including the important 'ungapped identity, NOT gap-inclusive identity' caveat. The description contributes nothing parameter-specific, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — grade a sequencing read against a reference from an alignment — and enumerates the four grade outcomes (✓/⚠/~/✗), so the agent knows exactly what the tool produces. It does not, however, distinguish itself from nearby siblings such as compare_reads_to_reference or alignment_agreement, which an agent could plausibly confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from an alignment' implies the prerequisite (pre-gapped read/ref rows) but gives no explicit condition for choosing this over compare_reads_to_reference or alignment_agreement. No when-not guidance and no mention that thresholds are tunable to shift the grade boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_structure_libraryB
Read-only
Inspect

Write a list of small molecules as one file: SDF (V2000 or V3000), each record named and, optionally, carrying its canonical SMILES and RDKit descriptors as data fields; or SMILES or CXSMILES, one record a line followed by its name. Written as RDKit's SDWriter, MolToSmiles and MolToCXSmiles write it; a structure RDKit cannot read is left out and its index returned.

NameRequiredDescriptionDefault
namesNoa name per structure, in the same order (the SDF title line, the SMILES second column).
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
formatNothe file format. Values: sdf (SDF), sdf-v3000 (SDF V3000), smiles (SMILES), cxsmiles (CXSMILES).sdf
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
moleculesYesthe structures: one SMILES or molfile per entry.
with_propertiesNoSDF only: add canonical_smiles and the RDKit descriptors to each record as data fields.

Output Schema

NameRequiredDescription
textYesthe file
unreadYes0-based indices of the entries RDKit could not read, left out of the file
summaryYeshow many structures were written, of how many given, and which were left out

TDQS

B3.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=true, but the description explicitly says it writes a file, which is a mutating side effect. This is a direct contradiction, so the description fails to align with the structured safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and covers key details in two sentences, but the second sentence is awkwardly phrased (‘Written as RDKit's SDWriter, MolToSmiles and MolToCXSmiles write it’) and slightly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, nested objects, output schema), the description covers formats, naming, optional properties, and error handling adequately. However, it omits permission requirements or side-effect details beyond the format specification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds minor context about naming and optional data fields but largely repeats what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (write) and resource (structure library file), specifying exact formats (SDF, SMILES, CXSMILES), record naming, and optional data fields. It clearly distinguishes this from read-only or search-oriented sibling tools by focusing on file output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like read_structure or search_molecule_library. The description only implies usage by describing output formats, without stating prerequisites or when-not-to-use conditions.

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.

  1. 7 tool updates
    • Addedalignment_pca
    • Addedalignment_redundancy
    • Addedassemble_multiple_inserts
    • Addeddesign_combinatorial_library
    • Addeddesign_gene_fragment_order
    • Addedligation_independent_clone
    • Addedvariant_consequences
  2. 3 tool updates
    • Addedconvert_mass_moles
    • Changedplan_master_mix9 fields changed
      • changedInput schema / properties / include_dmso / description
        Previous value: -"include the setup's optional DMSO (3% final for Phusion). It lowers primer Tm, so lower the annealing temperature. Only applies when components is not given."New value: +"include the setup's optional DMSO (3% final). Offered by Phusion High-Fidelity DNA Polymerase (M0530); the setup's notes say when to use it. Only applies when setup is neb-phusion-m0530."
      • addedInput schema / properties / include_q_solution
        Added value: +{
        +  "default": false,
        +  "description": "include the setup's optional Q-Solution (1x (from the 5x stock) final). Offered by QIAGEN Taq DNA Polymerase (201203), QIAGEN HotStarTaq DNA Polymerase (203203); the setup's notes say when to use it. Only applies when setup is qiagen-taq-201203 or qiagen-hotstartaq-203203.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / mg_final
        Added value: +{
        +  "description": "total Mg²⁺ in the reaction, mM, reached by adding the vendor's 25 mM MgCl2 on top of what the buffer holds. Unset uses the vendor's default. Offered by QIAGEN Taq DNA Polymerase (201203), QIAGEN HotStarTaq DNA Polymerase (203203). In mM. Only applies when setup is qiagen-taq-201203 or qiagen-hotstartaq-203203.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / primer_final
        Added value: +{
        +  "description": "final concentration of each primer, µM. Most vendors state primers as a range rather than a volume; unset uses the setup's own value (its single stated value, else the low end of its range). In µM. Only applies when setup is takara-taq-r001a or takara-ex-taq-rr001a or takara-la-taq-rr002a or takara-ex-premier-rr370a or primestar-gxl-r050a or primestar-gxl-r050a-rapid or primestar-hs-r010a or primestar-max-r045a or primestar-longseq-r055a or cloneamp-hifi-639298 or speedstar-hs-rr070a or terra-direct-639270 or advantage-hd-639241 or qiagen-taq-201203 or qiagen-hotstartaq-203203.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / primer_stock
        Added value: +{
        +  "default": 10,
        +  "description": "concentration of your primer stock, µM; each primer's volume is its final concentration diluted from this stock. In µM. Only applies when setup is takara-taq-r001a or takara-ex-taq-rr001a or takara-la-taq-rr002a or takara-ex-premier-rr370a or primestar-gxl-r050a or primestar-gxl-r050a-rapid or primestar-hs-r010a or primestar-max-r045a or primestar-longseq-r055a or cloneamp-hifi-639298 or speedstar-hs-rr070a or terra-direct-639270 or advantage-hd-639241 or qiagen-taq-201203 or qiagen-hotstartaq-203203.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / reaction_volume / description
        Previous value: -"volume of one reaction, µl. NEB publishes the Phusion setup at 20 and 50 µl; any volume scales from them. In µl."New value: +"volume of one reaction, µl. Each vendor publishes its setup at one or two volumes (25, 50 or 100 µl; NEB's Phusion at 20 and 50); any volume scales from them. In µl."
      • changedInput schema / properties / setup / description
        Previous value: -"the vendor reaction setup to scale. Ignored when `components` is given. Values: neb-phusion-m0530 (Phusion High-Fidelity DNA Polymerase (M0530)). Only applies when components is not given."New value: +"the vendor reaction setup to scale. Ignored when `components` is given. Values: neb-phusion-m0530 (Phusion High-Fidelity DNA Polymerase (M0530)), takara-taq-r001a (TaKaRa Taq (R001A)), takara-ex-taq-rr001a (TaKaRa Ex Taq (RR001A)), takara-la-taq-rr002a (TaKaRa LA Taq (RR002A)), takara-ex-premier-rr370a (TaKaRa Ex Premier (RR370A)), primestar-gxl-r050a (PrimeSTAR GXL (R050A), standard protocol), primestar-gxl-r050a-rapid (PrimeSTAR GXL (R050A), rapid protocol), primestar-hs-r010a (PrimeSTAR HS (R010A)), primestar-max-r045a (PrimeSTAR Max (R045A)), primestar-longseq-r055a (PrimeSTAR LongSeq (R055S/R055A)), cloneamp-hifi-639298 (CloneAmp HiFi PCR Premix (639298)), speedstar-hs-rr070a (SpeedSTAR HS (RR070A)), terra-direct-639270 (Terra PCR Direct Polymerase Mix (639270)), titanium-taq-639208 (Titanium Taq DNA Polymerase (639208)), advantage-hd-639241 (Advantage HD Polymerase Mix (639241)), qiagen-taq-201203 (QIAGEN Taq DNA Polymerase (201203)), qiagen-hotstartaq-203203 (QIAGEN HotStarTaq DNA Polymerase (203203)). Only applies when components is not given."
      • changedInput schema / properties / setup / enum
        Previous value: -[
        -  "neb-phusion-m0530"
        -]New value: +[
        +  "neb-phusion-m0530",
        +  "takara-taq-r001a",
        +  "takara-ex-taq-rr001a",
        +  "takara-la-taq-rr002a",
        +  "takara-ex-premier-rr370a",
        +  "primestar-gxl-r050a",
        +  "primestar-gxl-r050a-rapid",
        +  "primestar-hs-r010a",
        +  "primestar-max-r045a",
        +  "primestar-longseq-r055a",
        +  "cloneamp-hifi-639298",
        +  "speedstar-hs-rr070a",
        +  "terra-direct-639270",
        +  "titanium-taq-639208",
        +  "advantage-hd-639241",
        +  "qiagen-taq-201203",
        +  "qiagen-hotstartaq-203203"
        +]
      • changedInput schema / properties / template_volume / description
        Previous value: -"template DNA per reaction, µl, added to each tube rather than the mix. The vendor leaves it to you (NEB: < 250 ng). In µl. Only applies when components is not given."New value: +"template DNA per reaction, µl, added to each tube rather than the mix. The vendor states an amount, not a volume (NEB Phusion: < 250 ng), so the volume is yours. In µl. Only applies when components is not given."
    • Addedplan_serial_dilution
  3. 4 tool updates
    • Changedcheck_color_balance1 field changed
      • changedOutput schema / properties / channelPlot / description
        Previous value: -"the fraction of the pool producing signal in each channel at each index cycle; the series are named after the channels, and their colours are not the dyes"New value: +"the fraction of the pool producing signal in each channel at each index cycle; the series are named after the channels, and their colors are not the dyes"
    • Changedfetch_article1 field changed
      • changedOutput schema / properties / license / description
        Previous value: -"the article's own licence statement, as the publisher wrote it"New value: +"the article's own license statement, as the publisher wrote it"
    • Addedplan_master_mix
    • Addedsolve_dilution
  4. 49 tool updates
    • Changedalign_read2 fields changed
      • addedOutput schema / properties / identity / x-unit
        Added value: +"%"
      • addedOutput schema / properties / referenceLength / x-unit
        Added value: +"bp"
    • Changedanalyze_melt_curves1 field changed
      • addedOutput schema / properties / meanTm / x-unit
        Added value: +"°C"
    • Changedblast_project_sequences1 field changed
      • addedOutput schema / properties / topIdentity / x-unit
        Added value: +"%"
    • Changedblast_search1 field changed
      • addedOutput schema / properties / topIdentity / x-unit
        Added value: +"%"
    • Changedcall_cq1 field changed
      • addedOutput schema / properties / meanEfficiency / x-unit
        Added value: +"%"
    • Changedcheck_scorpion_stem3 fields changed
      • addedOutput schema / properties / difference / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / probeTm / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / stemTm / x-unit
        Added value: +"°C"
    • Changedcodon_table_fetch1 field changed
      • addedOutput schema / properties / gc3 / x-unit
        Added value: +"%"
    • Changedcompare_constructions1 field changed
      • addedOutput schema / properties / similarity / x-unit
        Added value: +"%"
    • Changedcompare_reads_to_reference2 fields changed
      • addedOutput schema / properties / coveragePct / x-unit
        Added value: +"%"
      • addedOutput schema / properties / identityPct / x-unit
        Added value: +"%"
    • Changedcrispr_quantify_edits1 field changed
      • addedOutput schema / properties / hdrPct / x-unit
        Added value: +"%"
    • Changeddesign_fusion_site_primers2 fields changed
      • addedOutput schema / properties / forwardTm / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / reverseTm / x-unit
        Added value: +"°C"
    • Changeddesign_gibson_primers1 field changed
      • addedOutput schema / properties / overlap / x-unit
        Added value: +"bp"
    • Changeddesign_multisite_primers1 field changed
      • addedOutput schema / properties / reactionTemperature / x-unit
        Added value: +"°C"
    • Changeddesign_overhang_set1 field changed
      • addedOutput schema / properties / percent / x-unit
        Added value: +"%"
    • Changeddesign_primer_pairs2 fields changed
      • addedOutput schema / properties / productLen / x-unit
        Added value: +"bp"
      • addedOutput schema / properties / ta / x-unit
        Added value: +"°C"
    • Changeddesign_primers5 fields changed
      • addedOutput schema / properties / forwardTm / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / productLen / x-unit
        Added value: +"bp"
      • addedOutput schema / properties / productTm / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / reverseTm / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / ta / x-unit
        Added value: +"°C"
    • Changeddesign_rbs1 field changed
      • addedOutput schema / properties / dgTotal / x-unit
        Added value: +"kcal/mol"
    • Changeddesign_saturation_primers3 fields changed
      • addedOutput schema / properties / forwardTemperature / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / overlapTemperature / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / reverseTemperature / x-unit
        Added value: +"°C"
    • Changeddraw_alignment2 fields changed
      • addedOutput schema / properties / height / x-unit
        Added value: +"px"
      • addedOutput schema / properties / width / x-unit
        Added value: +"px"
    • Changeddraw_gel2 fields changed
      • addedOutput schema / properties / height / x-unit
        Added value: +"px"
      • addedOutput schema / properties / width / x-unit
        Added value: +"px"
    • Changeddraw_trace2 fields changed
      • addedOutput schema / properties / height / x-unit
        Added value: +"px"
      • addedOutput schema / properties / width / x-unit
        Added value: +"px"
    • Changeddraw_tree2 fields changed
      • addedOutput schema / properties / height / x-unit
        Added value: +"px"
      • addedOutput schema / properties / width / x-unit
        Added value: +"px"
    • Changedexport_map_svg2 fields changed
      • addedOutput schema / properties / height / x-unit
        Added value: +"px"
      • addedOutput schema / properties / width / x-unit
        Added value: +"px"
    • Changedfastq_qc1 field changed
      • addedOutput schema / properties / gcDeviationPercent / x-unit
        Added value: +"%"
    • Changedfind_orfs1 field changed
      • addedOutput schema / properties / longest / x-unit
        Added value: +"bp"
    • Changedfold_rna1 field changed
      • addedOutput schema / properties / dg / x-unit
        Added value: +"kcal/mol"
    • Changedfusion_pcr1 field changed
      • addedOutput schema / properties / productTm / x-unit
        Added value: +"°C"
    • Changedget_open_record1 field changed
      • addedOutput schema / properties / length / x-unit
        Added value: +"bp"
    • Changedget_selection1 field changed
      • addedOutput schema / properties / length / x-unit
        Added value: +"bp"
    • Changedgraft_antibody_cdrs1 field changed
      • addedOutput schema / properties / identity / x-unit
        Added value: +"%"
    • Changedhumanize_antibody1 field changed
      • addedOutput schema / properties / identity / x-unit
        Added value: +"%"
    • Changedload_record1 field changed
      • addedOutput schema / properties / length / x-unit
        Added value: +"bp"
    • Changedload_trace1 field changed
      • addedOutput schema / properties / expectedAccuracy / x-unit
        Added value: +"%"
    • Changedmelt_profile1 field changed
      • addedOutput schema / properties / tm50 / x-unit
        Added value: +"°C"
    • Changedmelting_temperature3 fields changed
      • addedOutput schema / properties / baseTm / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / gc / x-unit
        Added value: +"%"
      • addedOutput schema / properties / tm / x-unit
        Added value: +"°C"
    • Changedpcr_amplify4 fields changed
      • addedOutput schema / properties / annealingTempC / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / crossDimerTmC / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / forwardTmC / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / reverseTmC / x-unit
        Added value: +"°C"
    • Changedpeptide_mass2 fields changed
      • addedOutput schema / properties / average / x-unit
        Added value: +"Da"
      • addedOutput schema / properties / monoisotopic / x-unit
        Added value: +"Da"
    • Changedplan_thermocycler_program1 field changed
      • addedOutput schema / properties / denatureC / x-unit
        Added value: +"°C"
    • Changedprimer_check1 field changed
      • addedOutput schema / properties / bestIdentityPct / x-unit
        Added value: +"%"
    • Changedprotein_disorder_metapredict1 field changed
      • addedOutput schema / properties / percentDisordered / x-unit
        Added value: +"%"
    • Changedprotein_properties5 fields changed
      • addedOutput schema / properties / boman / x-unit
        Added value: +"kcal/mol"
      • addedOutput schema / properties / extinctionCystines / x-unit
        Added value: +"M⁻¹ cm⁻¹"
      • addedOutput schema / properties / extinctionReduced / x-unit
        Added value: +"M⁻¹ cm⁻¹"
      • addedOutput schema / properties / monoisotopicMw / x-unit
        Added value: +"Da"
      • addedOutput schema / properties / mw / x-unit
        Added value: +"Da"
    • Changedread_sequencing_qc1 field changed
      • addedOutput schema / properties / contaminationPct / x-unit
        Added value: +"%"
    • Changedread_structure2 fields changed
      • addedOutput schema / properties / extent / x-unit
        Added value: +"Å"
      • addedOutput schema / properties / resolution / x-unit
        Added value: +"Å"
    • Changedrecord_composition2 fields changed
      • addedOutput schema / properties / atPercent / x-unit
        Added value: +"%"
      • addedOutput schema / properties / gcPercent / x-unit
        Added value: +"%"
    • Changedscore_overhang_fidelity1 field changed
      • addedOutput schema / properties / percent / x-unit
        Added value: +"%"
    • Changedscreen_contamination1 field changed
      • addedOutput schema / properties / contaminatedPct / x-unit
        Added value: +"%"
    • Changedscreen_oligo_structure3 fields changed
      • addedOutput schema / properties / worstAnyTmC / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / worstEndTmC / x-unit
        Added value: +"°C"
      • addedOutput schema / properties / worstHairpinTmC / x-unit
        Added value: +"°C"
    • Changedverify_construct1 field changed
      • addedOutput schema / properties / identity / x-unit
        Added value: +"%"
    • Changedverify_read2 fields changed
      • addedOutput schema / properties / coveragePct / x-unit
        Added value: +"%"
      • addedOutput schema / properties / identity / x-unit
        Added value: +"%"
  5. 9 tool updates
    • Changedalign_sequences2 fields changed
      • addedOutput schema / properties / figure
        Added value: +{
        +  "description": "the alignment's first 80 columns drawn as the MSA canvas opens on them: rows named, residues shaded by column identity, the conservation line under the block. draw_alignment draws any other window",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rows",
        -  "length",
        -  "count",
        -  "consensus",
        -  "alignedSequences",
        -  "conservation",
        -  "engine",
        -  "scores",
        -  "guideTreeNewick",
        -  "fit"
        -]New value: +[
        +  "rows",
        +  "length",
        +  "count",
        +  "consensus",
        +  "alignedSequences",
        +  "conservation",
        +  "engine",
        +  "scores",
        +  "guideTreeNewick",
        +  "figure",
        +  "fit"
        +]
    • Changedalignment_window2 fields changed
      • addedOutput schema / properties / depthPlot
        Added value: +{
        +  "description": "the coverage track as the pileup draws it: each bin's lowest, mean and highest per-base depth over ALL reads, so a dropout narrower than a bin still shows in the minimum",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "reads",
        -  "read_count",
        -  "hidden",
        -  "sampled",
        -  "window",
        -  "depth_mean",
        -  "depth_max",
        -  "coverage",
        -  "insert_size"
        -]New value: +[
        +  "reads",
        +  "read_count",
        +  "hidden",
        +  "sampled",
        +  "window",
        +  "depth_mean",
        +  "depth_max",
        +  "coverage",
        +  "depthPlot",
        +  "insert_size"
        +]
    • Changedassess_small_molecule2 fields changed
      • addedOutput schema / properties / structure
        Added value: +{
        +  "description": "the 2D structure every reading was taken on, drawn by RDKit with implicit hydrogens as the chemistry tab opens it",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "summary",
        -  "canonical_smiles",
        -  "descriptors",
        -  "rules",
        -  "alerts",
        -  "boiled_egg",
        -  "formula",
        -  "synthetic_accessibility",
        -  "np_likeness",
        -  "solubility",
        -  "bioavailability_radar",
        -  "scaffold",
        -  "qed",
        -  "atom_contributions"
        -]New value: +[
        +  "summary",
        +  "canonical_smiles",
        +  "structure",
        +  "descriptors",
        +  "rules",
        +  "alerts",
        +  "boiled_egg",
        +  "formula",
        +  "synthetic_accessibility",
        +  "np_likeness",
        +  "solubility",
        +  "bioavailability_radar",
        +  "scaffold",
        +  "qed",
        +  "atom_contributions"
        +]
    • Changedcompare_reads_to_reference2 fields changed
      • addedOutput schema / properties / alignmentFigure
        Added value: +{
        +  "description": "the reference and every read in the shared frame, 80 columns around the first ACCEPTED change (else the first difference, else the start), shaded by column identity; draw_alignment draws any other window of `alignedReads`",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "consensus",
        -  "variants",
        -  "accepted",
        -  "coveragePct",
        -  "identityPct",
        -  "perRead",
        -  "gaps",
        -  "conclusion",
        -  "cautions",
        -  "derivation",
        -  "record"
        -]New value: +[
        +  "consensus",
        +  "alignmentFigure",
        +  "variants",
        +  "accepted",
        +  "coveragePct",
        +  "identityPct",
        +  "perRead",
        +  "gaps",
        +  "conclusion",
        +  "cautions",
        +  "derivation",
        +  "record"
        +]
    • Changedexport_map_svg7 fields changed
      • addedInput schema / properties / end
        Added value: +{
        +  "description": "linear only: last base of the window to draw (1-based, inclusive); left unset, the record's last base. In bp. Only applies when layout is linear.",
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / layout
        Added value: +{
        +  "default": "circular",
        +  "description": "circular: the ring; linear: the record unrolled into rows, features in lanes under a ruler and sites above it.",
        +  "enum": [
        +    "circular",
        +    "linear"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / show_bases
        Added value: +{
        +  "default": false,
        +  "description": "linear only: draw both strands' bases over the ruler; rows wrap to keep each base readable. Only applies when layout is linear.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / start
        Added value: +{
        +  "description": "linear only: first base of the window to draw (1-based); left unset, the record's first base. In bp. Only applies when layout is linear.",
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedOutput schema / properties / rows
        Added value: +{
        +  "description": "rows a linear map wrapped into; 0 for the circular layout",
        +  "type": "number"
        +}
      • changedOutput schema / properties / sites / description
        Previous value: -"cut sites drawn in the outer ring"New value: +"cut sites drawn (the outer ring, or the ticks above a linear map's ruler)"
      • changedOutput schema / required
        Previous value: -[
        -  "svg",
        -  "width",
        -  "height",
        -  "sites"
        -]New value: +[
        +  "svg",
        +  "width",
        +  "height",
        +  "sites",
        +  "rows"
        +]
    • Addedfetch_article
    • Addedfetch_clinvar_vcf
    • Addedfind_accessions
    • Changedvariant_call_summary3 fields changed
      • addedOutput schema / properties / indelPlot
        Added value: +{
        +  "description": "sites per indel length (ALT minus REF), deletions left of zero and insertions right of it",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / substitutionMap
        Added value: +{
        +  "description": "the twelve directed substitutions as a REF by ALT grid, the Summary tab’s bars as one picture; the diagonal is empty, since a base does not substitute for itself",
        +  "properties": {
        +    "cols": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "label": {
        +      "type": "string"
        +    },
        +    "rows": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "values": {
        +      "items": {
        +        "items": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "type": "array"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "rows",
        +    "cols",
        +    "values",
        +    "label"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "summary",
        -  "counts",
        -  "tstv",
        -  "substitutions",
        -  "indel_lengths",
        -  "per_contig",
        -  "filters",
        -  "qual",
        -  "per_sample",
        -  "not_counted"
        -]New value: +[
        +  "summary",
        +  "counts",
        +  "tstv",
        +  "substitutions",
        +  "indel_lengths",
        +  "substitutionMap",
        +  "indelPlot",
        +  "per_contig",
        +  "filters",
        +  "qual",
        +  "per_sample",
        +  "not_counted"
        +]
  6. 5 tool updates
    • Changeddifferential_expression2 fields changed
      • addedOutput schema / properties / meanCounts
        Added value: +{
        +  "description": "DESeq2 runs only (empty under edgeR and voom): every tested gene with its mean normalized count (baseMean), 'gene value' per line: the gene weights for a Wallenius-weighted over-representation test, which corrects for the extra power to call well-counted genes",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "genes",
        -  "summary",
        -  "significantGenes",
        -  "upGenes",
        -  "downGenes",
        -  "testedGenes",
        -  "rankedList",
        -  "maPlot",
        -  "volcano",
        -  "dispersionPlot",
        -  "samplePca",
        -  "sampleDistances"
        -]New value: +[
        +  "genes",
        +  "summary",
        +  "significantGenes",
        +  "upGenes",
        +  "downGenes",
        +  "testedGenes",
        +  "rankedList",
        +  "meanCounts",
        +  "maPlot",
        +  "volcano",
        +  "dispersionPlot",
        +  "samplePca",
        +  "sampleDistances"
        +]
    • Addedgene_set_camera
    • Changedgene_set_enrichment13 fields changed
      • addedInput schema / properties / adaptive
        Added value: +{
        +  "default": false,
        +  "description": "sample or permute: draw per set in batches from minPerm, doubling while its p-value is at most pvalThreshold, up to maxPerm, instead of a fixed count. Only applies when method is sample or permute.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / engine
        Added value: +{
        +  "default": "clusterProfiler",
        +  "description": "clusterProfiler: enrichit 0.2.6's GSEA, what clusterProfiler 4.20's GSEA() runs, with q-values. fgsea: fgsea 1.38's own, a different random stream and arithmetic, so the same seed gives fgsea's p-values; BH only, no q-value.",
        +  "enum": [
        +    "clusterProfiler",
        +    "fgsea"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / eps / description
        Previous value: -"floor for multilevel p-values; 0 estimates them however small."New value: +"floor for multilevel p-values; 0 estimates them however small. Only applies when method is multilevel."
      • addedInput schema / properties / maxPerm
        Added value: +{
        +  "default": 100000,
        +  "description": "adaptive: the most draws any set gets. Only applies when adaptive is true.",
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / method
        Added value: +{
        +  "default": "multilevel",
        +  "description": "clusterProfiler's p-value: multilevel Monte Carlo (fgsea-derived, down to eps); sample: a fixed count of random gene samples of each set's size; permute: that count of relabellings of the whole ranked list (slower: every set is re-scored along every permuted list). The permutation methods score both tails whatever the score type. Only applies when engine is clusterProfiler.",
        +  "enum": [
        +    "multilevel",
        +    "sample",
        +    "permute"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / minPerm
        Added value: +{
        +  "default": 101,
        +  "description": "adaptive: the first batch for every set. Only applies when adaptive is true.",
        +  "minimum": 1,
        +  "type": "number"
        +}
      • changedInput schema / properties / nPermSimple / description
        Previous value: -"permutations for the first, simple p-value estimate and the NES."New value: +"multilevel: permutations for the first, simple p-value estimate and the NES. Only applies when method is multilevel."
      • addedInput schema / properties / nperm
        Added value: +{
        +  "default": 0,
        +  "description": "fgsea: run fgseaSimple with this many permutations (p-values no smaller than 1/(nperm + 1)); 0 keeps the multilevel estimate. Only applies when engine is fgsea.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / permutations
        Added value: +{
        +  "default": 1000,
        +  "description": "sample or permute: null draws per set (p-values no smaller than 1/(same-side draws + 1)). Only applies when method is sample or permute.",
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / pvalThreshold
        Added value: +{
        +  "default": 0.1,
        +  "description": "adaptive: a set whose p-value rises above this stops drawing. Only applies when adaptive is true.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / sampleSize / description
        Previous value: -"multilevel samples per level (made odd)."New value: +"multilevel samples per level (made odd). Only applies when method is multilevel."
      • changedInput schema / properties / scoreType / description
        Previous value: -"std: both tails; pos or neg: one-tailed, for a statistic with one meaningful sign."New value: +"std: both tails; pos or neg: one-tailed, for a statistic with one meaningful sign (the multilevel estimate only). Only applies when method is multilevel."
      • changedInput schema / properties / seed / description
        Previous value: -"seeds the permutations; the same seed gives the same p-values as enrichit."New value: +"seeds the permutations; the same seed gives the same p-values as the chosen engine in R (fgsea: set.seed(seed) before the call)."
    • Changedgene_set_overrepresentation1 field changed
      • addedInput schema / properties / weights
        Added value: +{
        +  "default": "",
        +  "description": "per-gene sampling weights, 'gene weight' per line (e.g. a DESeq2 run's mean normalized counts, `meanCounts`, or gene lengths): replaces the hypergeometric test with Wallenius' noncentral one (BiasedUrn), each set's odds being its members' mean weight over the rest of the background's, so a set of well-counted or long genes is not called for being easy to detect. Background genes without a weight take the median; weights at or below 0 are lifted to the smallest positive one. Empty is the unweighted test.",
        +  "type": "string"
        +}
    • Addedresolve_gene_sets
  7. 4 tool updates
    • Addedadd_notebook_figure
    • Changedassemble_index_oligos1 field changed
      • changedInput schema / properties / reverse_complement_tag / description
        Previous value: -"append the tag as its reverse complement, as the instrument requires for some read orientations. Advanced."New value: +"use each tag as its reverse complement, in an adapter or on a primer, as the instrument requires for some read orientations. Advanced."
    • Changeddesign_barcodes4 fields changed
      • addedInput schema / properties / filter_self_complementary
        Added value: +{
        +  "default": true,
        +  "description": "reject barcodes that are their own reverse complement. Advanced.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / iterations
        Added value: +{
        +  "default": 100,
        +  "description": "random restarts of the Conway closure (sampling) or generations of the evolutionary search (ashlock); DNABarcodes' default. Only applies when heuristic is sampling or ashlock.",
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / population
        Added value: +{
        +  "default": 200,
        +  "description": "chromosomes carried per Ashlock generation; DNABarcodes' default. Only applies when heuristic is ashlock.",
        +  "minimum": 2,
        +  "type": "number"
        +}
      • addedInput schema / properties / seed
        Added value: +{
        +  "default": 1,
        +  "description": "PRNG seed for a stochastic search: the same seed always gives the same set. Only applies when heuristic is sampling or ashlock.",
        +  "type": "number"
        +}
    • Changedrecord_experiment2 fields changed
      • addedOutput schema / properties / unresolved
        Added value: +{
        +  "description": "`{ references, citations }`: every `@` / `!` / `&` reference in the stored body that names nothing in this workspace, as written, and every citation key that is not a DOI, PMID or PMCID. Empty lists mean every reference resolves; fix and append when they are not. Null when the write ran without the check (a blocking workflow run)"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "entry_id",
        -  "created",
        -  "title",
        -  "tags",
        -  "crossRefs",
        -  "collection",
        -  "bodyChars"
        -]New value: +[
        +  "entry_id",
        +  "created",
        +  "title",
        +  "tags",
        +  "crossRefs",
        +  "collection",
        +  "unresolved",
        +  "bodyChars"
        +]
  8. 3 tool updates
    • Changedlookup_gene1 field changed
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "ensembl",
        -  "mygene",
        -  "ucsc",
        -  "gtex",
        -  "biomart"
        -]New value: +[
        +  "ncbi-gene",
        +  "hgnc",
        +  "ensembl",
        +  "mygene",
        +  "ucsc",
        +  "gtex",
        +  "biomart"
        +]
    • Changedlookup_ontology1 field changed
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "ols",
        -  "quickgo",
        -  "reactome",
        -  "kegg",
        -  "rfam",
        -  "cellguide",
        -  "panglaodb",
        -  "antibodyregistry"
        -]New value: +[
        +  "ols",
        +  "ncbi-taxonomy",
        +  "quickgo",
        +  "reactome",
        +  "kegg",
        +  "rfam",
        +  "cellguide",
        +  "panglaodb",
        +  "antibodyregistry",
        +  "identifiers-org"
        +]
    • Changedquery_database2 fields changed
      • changedInput schema / properties / authority / description
        Previous value: -"which database to ask. Values: pubmed (NCBI PubMed (E-utilities) — literature), pmc-idconv (NCBI PMC ID Converter — literature), europepmc (Europe PMC — literature), openalex (OpenAlex — literature), crossref (Crossref — literature), arxiv (arXiv — literature), biorxiv (bioRxiv — literature), medrxiv (medRxiv — literature), datacite (DataCite — literature), ensembl (Ensembl REST — genomics), ucsc (UCSC Genome Browser API — genomics), biomart (Ensembl BioMart — genomics), mygene (MyGene.info — genomics), gnomad (gnomAD (Broad) — genomics), clinvar (NCBI ClinVar — genomics), dbsnp (NCBI dbSNP — genomics), variation (NCBI Variation Services — genomics), cadd (CADD (Kircher lab) — genomics), gtex (GTEx Portal — genomics), eqtlcatalogue (eQTL Catalogue (EBI) — genomics), gwascatalog (GWAS Catalog (EBI/NHGRI) — genomics), pheweb (PheWeb / FinnGen — genomics), uniprot (UniProt — proteins), interpro (InterPro / Pfam (EBI) — proteins), string (STRING — proteins), proteinatlas (Human Protein Atlas — proteins), alphafold (AlphaFold DB (EBI) — proteins), pdb (RCSB PDB — proteins), emdb (EMDB (EBI) — proteins), complexportal (Complex Portal (EBI) — proteins), intact (IntAct (EBI) — proteins), chembl (ChEMBL (EBI) — chemistry), pubchem (PubChem (NCBI) — chemistry), chebi (ChEBI (EBI) — chemistry), bindingdb (BindingDB — chemistry), zinc (ZINC (CartBlanche, UCSF) — chemistry), rhea (Rhea (EBI) — chemistry), clinicaltrials (ClinicalTrials.gov — clinical), openfda (openFDA — clinical), opentargets (Open Targets Platform — clinical), civic (CIViC — clinical), clingen (ClinGen (erepo.genome.network) — clinical), cosmic (COSMIC via NLM Clinical Tables — clinical), depmap (Cell Model Passports (Sanger) — clinical), cbioportal (cBioPortal — clinical), geo (NCBI GEO — omics), arrayexpress (ArrayExpress / BioStudies (EBI) — omics), pride (PRIDE (EBI) — omics), metabolights (MetaboLights (EBI) — omics), mgnify (MGnify (EBI) — omics), encode (ENCODE Project — omics), jaspar (JASPAR (Elixir) — omics), unibind (UniBind (Univ. of Oslo) — omics), cellguide (CellGuide (CZI CELLxGENE) — cells), panglaodb (PanglaoDB — cells), antibodyregistry (Antibody Registry (RRID) — cells), ols (OLS4 (EBI) — ontology), quickgo (QuickGO (EBI) — ontology), reactome (Reactome — ontology), kegg (KEGG — ontology), rfam (Rfam (EBI) — ontology), grantsgov (Grants.gov — funding)."New value: +"which database to ask. Values: pubmed (NCBI PubMed (E-utilities) — literature), pmc-idconv (NCBI PMC ID Converter — literature), europepmc (Europe PMC — literature), openalex (OpenAlex — literature), crossref (Crossref — literature), arxiv (arXiv — literature), biorxiv (bioRxiv — literature), medrxiv (medRxiv — literature), datacite (DataCite — literature), ensembl (Ensembl REST — genomics), ucsc (UCSC Genome Browser API — genomics), biomart (Ensembl BioMart — genomics), mygene (MyGene.info — genomics), ncbi-gene (NCBI Gene (E-utilities) — genomics), hgnc (HGNC (genenames.org) — genomics), gnomad (gnomAD (Broad) — genomics), clinvar (NCBI ClinVar — genomics), dbsnp (NCBI dbSNP — genomics), variation (NCBI Variation Services — genomics), cadd (CADD (Kircher lab) — genomics), gtex (GTEx Portal — genomics), eqtlcatalogue (eQTL Catalogue (EBI) — genomics), gwascatalog (GWAS Catalog (EBI/NHGRI) — genomics), pheweb (PheWeb / FinnGen — genomics), uniprot (UniProt — proteins), interpro (InterPro / Pfam (EBI) — proteins), string (STRING — proteins), proteinatlas (Human Protein Atlas — proteins), alphafold (AlphaFold DB (EBI) — proteins), pdb (RCSB PDB — proteins), emdb (EMDB (EBI) — proteins), complexportal (Complex Portal (EBI) — proteins), intact (IntAct (EBI) — proteins), chembl (ChEMBL (EBI) — chemistry), pubchem (PubChem (NCBI) — chemistry), chebi (ChEBI (EBI) — chemistry), bindingdb (BindingDB — chemistry), zinc (ZINC (CartBlanche, UCSF) — chemistry), rhea (Rhea (EBI) — chemistry), clinicaltrials (ClinicalTrials.gov — clinical), openfda (openFDA — clinical), opentargets (Open Targets Platform — clinical), civic (CIViC — clinical), clingen (ClinGen (erepo.genome.network) — clinical), cosmic (COSMIC via NLM Clinical Tables — clinical), depmap (Cell Model Passports (Sanger) — clinical), cbioportal (cBioPortal — clinical), geo (NCBI GEO — omics), arrayexpress (ArrayExpress / BioStudies (EBI) — omics), pride (PRIDE (EBI) — omics), metabolights (MetaboLights (EBI) — omics), mgnify (MGnify (EBI) — omics), encode (ENCODE Project — omics), jaspar (JASPAR (Elixir) — omics), unibind (UniBind (Univ. of Oslo) — omics), cellguide (CellGuide (CZI CELLxGENE) — cells), panglaodb (PanglaoDB — cells), antibodyregistry (Antibody Registry (RRID) — cells), ols (OLS4 (EBI) — ontology), quickgo (QuickGO (EBI) — ontology), identifiers-org (identifiers.org registry — ontology), ncbi-taxonomy (NCBI Taxonomy (E-utilities) — ontology), reactome (Reactome — ontology), kegg (KEGG — ontology), rfam (Rfam (EBI) — ontology), grantsgov (Grants.gov — funding)."
      • changedInput schema / properties / authority / enum
        Previous value: -[
        -  "pubmed",
        -  "pmc-idconv",
        -  "europepmc",
        -  "openalex",
        -  "crossref",
        -  "arxiv",
        -  "biorxiv",
        -  "medrxiv",
        -  "datacite",
        -  "ensembl",
        -  "ucsc",
        -  "biomart",
        -  "mygene",
        -  "gnomad",
        -  "clinvar",
        -  "dbsnp",
        -  "variation",
        -  "cadd",
        -  "gtex",
        -  "eqtlcatalogue",
        -  "gwascatalog",
        -  "pheweb",
        -  "uniprot",
        -  "interpro",
        -  "string",
        -  "proteinatlas",
        -  "alphafold",
        -  "pdb",
        -  "emdb",
        -  "complexportal",
        -  "intact",
        -  "chembl",
        -  "pubchem",
        -  "chebi",
        -  "bindingdb",
        -  "zinc",
        -  "rhea",
        -  "clinicaltrials",
        -  "openfda",
        -  "opentargets",
        -  "civic",
        -  "clingen",
        -  "cosmic",
        -  "depmap",
        -  "cbioportal",
        -  "geo",
        -  "arrayexpress",
        -  "pride",
        -  "metabolights",
        -  "mgnify",
        -  "encode",
        -  "jaspar",
        -  "unibind",
        -  "cellguide",
        -  "panglaodb",
        -  "antibodyregistry",
        -  "ols",
        -  "quickgo",
        -  "reactome",
        -  "kegg",
        -  "rfam",
        -  "grantsgov"
        -]New value: +[
        +  "pubmed",
        +  "pmc-idconv",
        +  "europepmc",
        +  "openalex",
        +  "crossref",
        +  "arxiv",
        +  "biorxiv",
        +  "medrxiv",
        +  "datacite",
        +  "ensembl",
        +  "ucsc",
        +  "biomart",
        +  "mygene",
        +  "ncbi-gene",
        +  "hgnc",
        +  "gnomad",
        +  "clinvar",
        +  "dbsnp",
        +  "variation",
        +  "cadd",
        +  "gtex",
        +  "eqtlcatalogue",
        +  "gwascatalog",
        +  "pheweb",
        +  "uniprot",
        +  "interpro",
        +  "string",
        +  "proteinatlas",
        +  "alphafold",
        +  "pdb",
        +  "emdb",
        +  "complexportal",
        +  "intact",
        +  "chembl",
        +  "pubchem",
        +  "chebi",
        +  "bindingdb",
        +  "zinc",
        +  "rhea",
        +  "clinicaltrials",
        +  "openfda",
        +  "opentargets",
        +  "civic",
        +  "clingen",
        +  "cosmic",
        +  "depmap",
        +  "cbioportal",
        +  "geo",
        +  "arrayexpress",
        +  "pride",
        +  "metabolights",
        +  "mgnify",
        +  "encode",
        +  "jaspar",
        +  "unibind",
        +  "cellguide",
        +  "panglaodb",
        +  "antibodyregistry",
        +  "ols",
        +  "quickgo",
        +  "identifiers-org",
        +  "ncbi-taxonomy",
        +  "reactome",
        +  "kegg",
        +  "rfam",
        +  "grantsgov"
        +]
  9. 11 tool updates
    • Changedanalyze_melt_curves4 fields changed
      • addedOutput schema / properties / derivativePlot
        Added value: +{
        +  "description": "`plate` only: −dF/dT of each reaction after normalisation and smoothing, the curve its peaks are called on, one line per reaction. Null for `vertex` and `curve`, which fit near the extremum and report no whole derivative",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / meltPlot
        Added value: +{
        +  "description": "the melt curves as read from the table, one line per reaction, fluorescence against temperature. Every engine reads this same input",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / targets
        Added value: +{
        +  "description": "`plate` only: per target, the reactions that contributed a product peak and their averaged Tm against the expected one. Empty for `vertex` and `curve`"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "reactions",
        -  "count",
        -  "meanTm",
        -  "noPeak",
        -  "classified",
        -  "engine",
        -  "replicateSpread"
        -]New value: +[
        +  "reactions",
        +  "count",
        +  "meanTm",
        +  "noPeak",
        +  "classified",
        +  "engine",
        +  "replicateSpread",
        +  "targets",
        +  "meltPlot",
        +  "derivativePlot"
        +]
    • Changedaudit_barcodes6 fields changed
      • addedOutput schema / properties / baseComposition
        Added value: +{
        +  "description": "the fraction of the set reading each base at each cycle",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / distanceHistogram
        Added value: +{
        +  "description": "how many PAIRS sit at each distance under the chosen metric: the shape behind the minimum",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / gcHistogram
        Added value: +{
        +  "description": "how many barcodes sit at each GC percentage",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / neighbourHistogram
        Added value: +{
        +  "description": "how many BARCODES have each nearest-neighbour distance: where the weak links are",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / statistics
        Added value: +{
        +  "description": "the whole-set statistics the four charts above are drawn from, which a min-distance figure hides: GC mean, spread and range, Shannon entropy per cycle, the fraction reading each base at each cycle, groups sharing a prefix in the first cycles read, duplicates, and the per-metric distance distributions"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "audit",
        -  "analysis",
        -  "matrices",
        -  "distanceMap",
        -  "kept",
        -  "dropped"
        -]New value: +[
        +  "audit",
        +  "analysis",
        +  "matrices",
        +  "distanceMap",
        +  "distanceHistogram",
        +  "neighbourHistogram",
        +  "gcHistogram",
        +  "baseComposition",
        +  "statistics",
        +  "kept",
        +  "dropped"
        +]
    • Changedcheck_color_balance2 fields changed
      • addedOutput schema / properties / channelPlot
        Added value: +{
        +  "description": "the fraction of the pool producing signal in each channel at each index cycle; the series are named after the channels, and their colours are not the dyes",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "tier",
        -  "ok",
        -  "violations",
        -  "cycles",
        -  "acrossChemistries"
        -]New value: +[
        +  "tier",
        +  "ok",
        +  "violations",
        +  "cycles",
        +  "channelPlot",
        +  "acrossChemistries"
        +]
    • Changedcopy_number_read2 fields changed
      • addedOutput schema / properties / lanes
        Added value: +{
        +  "description": "the tracks above drawn as the canvas draws them: one lane per graph over the same window, the bucket min-max envelope with its mean over it, the compared sample's envelope behind it where `compare` named a second file, and the marker lane underneath, because a gap in the probes is not a deletion. Null when no graph was decimated — no chromosome was selected, or none of its markers carried a value",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "summary",
        -  "provenance",
        -  "data_sets",
        -  "compared",
        -  "chromosomes",
        -  "index_source",
        -  "tracks"
        -]New value: +[
        +  "summary",
        +  "provenance",
        +  "data_sets",
        +  "compared",
        +  "chromosomes",
        +  "index_source",
        +  "tracks",
        +  "lanes"
        +]
    • Changedcrispr_design_guides2 fields changed
      • addedOutput schema / properties / region
        Added value: +{
        +  "description": "the window the guides were filtered to, resolved: start, end, and whether it is the whole molecule. Reported because `region_start`/`region_end` are optional and their default is the molecule's length, which a caller holding only this result does not have — without it, `count` of `totalCandidates` cannot be read"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "guides",
        -  "count",
        -  "totalCandidates",
        -  "topSpacer"
        -]New value: +[
        +  "guides",
        +  "count",
        +  "totalCandidates",
        +  "topSpacer",
        +  "region"
        +]
    • Changeddesign_genetic_circuit2 fields changed
      • addedOutput schema / properties / curvesFigure
        Added value: +{
        +  "description": "the curves above drawn as the panel draws them: one panel per gate, all on the same log-log axes, the response as a line and this design's operating points on it, ON in bluish green and OFF in vermillion",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "score",
        -  "assignment",
        -  "truthTable",
        -  "sequence",
        -  "dna",
        -  "placement",
        -  "toxicity",
        -  "curves",
        -  "netlist",
        -  "explanation",
        -  "libraries"
        -]New value: +[
        +  "score",
        +  "assignment",
        +  "truthTable",
        +  "sequence",
        +  "dna",
        +  "placement",
        +  "toxicity",
        +  "curves",
        +  "curvesFigure",
        +  "netlist",
        +  "explanation",
        +  "libraries"
        +]
    • Changedenzyme_collection2 fields changed
      • addedOutput schema / properties / census
        Added value: +{
        +  "description": "what this collection does to the open record, counted once: bases scanned, whether the scan wrapped the origin, names asked and resolved, total cuts, and how many enzymes cut it once, twice or more. Absent when nothing is open. This is the collection panel's own reading, so the sentence the door returns and the numbers it returns cannot disagree"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "enzymes",
        -  "collection",
        -  "count",
        -  "unresolved",
        -  "cutting",
        -  "singleCutters",
        -  "available"
        -]New value: +[
        +  "enzymes",
        +  "collection",
        +  "count",
        +  "unresolved",
        +  "census",
        +  "cutting",
        +  "singleCutters",
        +  "available"
        +]
    • Changedinfer_proteins3 fields changed
      • addedInput schema / properties / coverageOf
        Added value: +{
        +  "default": "",
        +  "description": "the accession whose sequence coverage is drawn; empty draws the first protein of the best group, as the Coverage tab opens on.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / coverageMap
        Added value: +{
        +  "description": "one protein's sequence with the peptides that identified it laid under the residues they cover, unique in blue and shared in orange: the Coverage tab's picture of `coverageOf`",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "proteins",
        -  "groups",
        -  "ambiguityGroups",
        -  "count",
        -  "scoreColumn",
        -  "method"
        -]New value: +[
        +  "proteins",
        +  "groups",
        +  "ambiguityGroups",
        +  "count",
        +  "scoreColumn",
        +  "method",
        +  "coverageMap"
        +]
    • Changedoptimize_sequence2 fields changed
      • addedOutput schema / properties / gcProfile
        Added value: +{
        +  "description": "windowed GC before and after, at each window's centre: the stretches the solver moved, which the two whole-sequence GC numbers average away",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "record",
        -  "sequence",
        -  "success",
        -  "nEdits",
        -  "gcAfter",
        -  "caiAfter",
        -  "candidates",
        -  "distinct"
        -]New value: +[
        +  "record",
        +  "sequence",
        +  "success",
        +  "nEdits",
        +  "gcAfter",
        +  "caiAfter",
        +  "candidates",
        +  "distinct",
        +  "gcProfile"
        +]
    • Changedprotein_properties34 fields changed
      • changedOutput schema / properties / a280 / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / aliphatic / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / aromaticity / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / atoms / description
        Previous value: -"total number of atoms in the molecule"New value: +"total number of atoms in the molecule, or null when a residue has no formula"
      • changedOutput schema / properties / atoms / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / boman / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / charge / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / elements / description
        Previous value: -"atom counts per element (C, H, N, O, S) behind the formula"New value: +"atom counts per element (C, H, N, O, S) behind the formula, or null when a residue has no formula"
      • changedOutput schema / properties / extinctionCystines / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / extinctionReduced / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / formula / description
        Previous value: -"molecular formula, ProtParam style (e.g. C1755H2634N466O557S5)"New value: +"molecular formula, ProtParam style (e.g. C1755H2634N466O557S5); empty when a residue has no formula"
      • changedOutput schema / properties / gravy / description
        Previous value: -"grand average of hydropathicity over `gravyScale`"New value: +"grand average of hydropathicity over `gravyScale`, or null when a residue has no value on it"
      • changedOutput schema / properties / gravy / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / gravyHydrophobicEnd / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / gravyScale / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / gravyZeroIsMeaningful / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / helix / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / instability / description
        Previous value: -"instability index (>40 = unstable in vivo)"New value: +"instability index (>40 = unstable in vivo), or null when a residue the Guruprasad table has no row for makes it undefined — refused rather than computed on a spliced sequence"
      • changedOutput schema / properties / instability / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / length
        Added value: +{
        +  "description": "residues analysed, including any the mass tables have no row for",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / momentHelix / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / momentSheet / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / momentWindow
        Added value: +{
        +  "description": "the window the two moments were measured over, after the clamp to the sequence length — a short peptide is not measured over 11 residues it does not have",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / monoisotopicMw / description
        Previous value: -"monoisotopic molecular weight [Da] — what mass spectrometry reports"New value: +"monoisotopic molecular weight [Da] — what mass spectrometry reports. Null when a residue has no mass, rather than a mass for a different molecule"
      • changedOutput schema / properties / monoisotopicMw / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / mw / description
        Previous value: -"molecular weight [Da]"New value: +"molecular weight [Da] — a FLOOR when `nonStandard` is non-empty, because ProtParam has no mass for those letters and still counts them in the length"
      • changedOutput schema / properties / mw / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / nonStandard
        Added value: +{
        +  "description": "residues with no mass at all (X, B, Z, gaps, *), with their positions: excluded from `mw`, `monoisotopicMw`, `formula` and `elements`, still counted in `length`. Empty on a clean chain"
        +}
      • changedOutput schema / properties / pI / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / scaleNonStandard
        Added value: +{
        +  "description": "residues that ARE weighed but have no per-residue scale value (U, O). They are why `gravy` and `instability` can come back null on a sequence whose mass is exact"
        +}
      • changedOutput schema / properties / sheet / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / stable
        Added value: +{
        +  "description": "ProtParam's own reading of the index: at or below 40. Null exactly when `instability` is — there is no verdict without a value",
        +  "type": [
        +    "boolean",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / turn / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "mw",
        -  "pI",
        -  "instability",
        -  "boman",
        -  "momentHelix",
        -  "momentSheet",
        -  "monoisotopicMw",
        -  "formula",
        -  "atoms",
        -  "extinctionReduced",
        -  "extinctionCystines",
        -  "a280",
        -  "nTerminal",
        -  "halfLifeMammalian",
        -  "halfLifeYeast",
        -  "halfLifeEcoli",
        -  "gravy",
        -  "gravyScale",
        -  "gravyHydrophobicEnd",
        -  "gravyZeroIsMeaningful",
        -  "aliphatic",
        -  "aromaticity",
        -  "helix",
        -  "turn",
        -  "sheet",
        -  "charge",
        -  "composition",
        -  "compositionPercent",
        -  "elements"
        -]New value: +[
        +  "mw",
        +  "length",
        +  "nonStandard",
        +  "scaleNonStandard",
        +  "pI",
        +  "instability",
        +  "stable",
        +  "boman",
        +  "momentHelix",
        +  "momentSheet",
        +  "momentWindow",
        +  "monoisotopicMw",
        +  "formula",
        +  "atoms",
        +  "extinctionReduced",
        +  "extinctionCystines",
        +  "a280",
        +  "nTerminal",
        +  "halfLifeMammalian",
        +  "halfLifeYeast",
        +  "halfLifeEcoli",
        +  "gravy",
        +  "gravyScale",
        +  "gravyHydrophobicEnd",
        +  "gravyZeroIsMeaningful",
        +  "aliphatic",
        +  "aromaticity",
        +  "helix",
        +  "turn",
        +  "sheet",
        +  "charge",
        +  "composition",
        +  "compositionPercent",
        +  "elements"
        +]
    • Changedread_sequencing_qc2 fields changed
      • addedOutput schema / properties / depthProfile
        Added value: +{
        +  "description": "the depth track drawn: the MINIMUM and the mean depth per window, with the coverage line and the track's median as rules, so a drop-out reads as a drop-out rather than being averaged away. Null for a Plasmidsaurus summary, which measures no track",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "kind",
        -  "perbase",
        -  "minCoverage",
        -  "positionsAbove20x",
        -  "contaminationPct",
        -  "contaminationSource",
        -  "plasmidsaurus",
        -  "shape",
        -  "longestGap",
        -  "largestStepFold",
        -  "reading"
        -]New value: +[
        +  "kind",
        +  "perbase",
        +  "minCoverage",
        +  "positionsAbove20x",
        +  "contaminationPct",
        +  "contaminationSource",
        +  "plasmidsaurus",
        +  "shape",
        +  "longestGap",
        +  "largestStepFold",
        +  "depthProfile",
        +  "reading"
        +]
  10. 6 tool updates
    • Changedcheck_scorpion_stem1 field changed
      • addedInput schema / properties / conditions / properties / selfcomp
        Added value: +{
        +  "description": "both strands are one self-complementary oligo (the concentration term becomes dnac1 rather than dnac1 − dnac2/2).",
        +  "type": "boolean"
        +}
    • Changeddesign_codehop1 field changed
      • addedInput schema / properties / conditions / properties / selfcomp
        Added value: +{
        +  "description": "both strands are one self-complementary oligo (the concentration term becomes dnac1 rather than dnac1 − dnac2/2).",
        +  "type": "boolean"
        +}
    • Changeddesign_gibson_primers1 field changed
      • addedInput schema / properties / conditions / properties / selfcomp
        Added value: +{
        +  "description": "both strands are one self-complementary oligo (the concentration term becomes dnac1 rather than dnac1 − dnac2/2).",
        +  "type": "boolean"
        +}
    • Changeddesign_primer_pairs1 field changed
      • addedInput schema / properties / conditions / properties / selfcomp
        Added value: +{
        +  "description": "both strands are one self-complementary oligo (the concentration term becomes dnac1 rather than dnac1 − dnac2/2).",
        +  "type": "boolean"
        +}
    • Changeddesign_primers1 field changed
      • addedInput schema / properties / conditions / properties / selfcomp
        Added value: +{
        +  "description": "both strands are one self-complementary oligo (the concentration term becomes dnac1 rather than dnac1 − dnac2/2).",
        +  "type": "boolean"
        +}
    • Changeddesign_qpcr_assay1 field changed
      • addedInput schema / properties / conditions / properties / selfcomp
        Added value: +{
        +  "description": "both strands are one self-complementary oligo (the concentration term becomes dnac1 rather than dnac1 − dnac2/2).",
        +  "type": "boolean"
        +}
  11. 2 tool updates
    • Changeddifferential_expression18 fields changed
      • addedInput schema / properties / avgTxLength
        Added value: +{
        +  "default": "",
        +  "description": "optional: tximport's average transcript lengths (txi$length), the same genes and samples as `counts`. DESeq2 then normalizes by gene-by-sample factors (each gene's lengths over their geometric mean, times median-of-ratios size factors), correcting for changes in transcript usage between samples. Only applies when method is DESeq2.",
        +  "type": "string"
        +}
      • addedInput schema / properties / betaPrior
        Added value: +{
        +  "default": false,
        +  "description": "DESeq2's pre-1.16 default: a zero-mean Normal prior on every level's log2 fold change, so the reported fold changes, SEs and Wald test are the shrunken (MAP) ones. Wald only, no interactions; use instead of `shrink`. Only applies when method is DESeq2.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / blind
        Added value: +{
        +  "default": true,
        +  "description": "fit the transformation's dispersion trend under ~ 1, blind to the design (DESeq2's default, for quality assessment); off reuses the fitted design and trend, for downstream use when large differences between groups are expected. Only applies when method is DESeq2.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / fitType / description
        Previous value: -"the dispersion trend: parametric (asymptDisp + extraPois / mean, DESeq2's default) or the mean of gene-wise estimates. Only applies when method is DESeq2."New value: +"the dispersion trend: parametric (asymptDisp + extraPois / mean, DESeq2's default, which falls back to local when it does not fit), local (locfit regression of log dispersion on log mean), the mean of gene-wise estimates, or glmGamPoi (gene-wise maximum likelihood by glmGamPoi, a local-median trend and quasi-likelihood shrinkage; with test LRT the p-values are glmGamPoi's quasi-likelihood F test; no outlier replacement, minmu 1e-6, no observation weights). Only applies when method is DESeq2."
      • changedInput schema / properties / fitType / enum
        Previous value: -[
        -  "parametric",
        -  "mean"
        -]New value: +[
        +  "parametric",
        +  "local",
        +  "mean",
        +  "glmGamPoi"
        +]
      • addedInput schema / properties / minmu
        Added value: +{
        +  "description": "the floor on fitted means in the GLM and the dispersion fit; empty is DESeq2's default, 0.5, or 1e-6 with fitType glmGamPoi. Single-cell counts, often below 1, want a small value such as 1e-6 (zinbwave's vignette). Only applies when method is DESeq2.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / pcaGroup
        Added value: +{
        +  "default": "",
        +  "description": "plotPCA's intgroup: the sample-table variables, separated by commas, that colour the samples (joined with ':' when more than one); empty is the factor of the reported comparison. Only applies when method is DESeq2.",
        +  "type": "string"
        +}
      • addedInput schema / properties / pcaTop
        Added value: +{
        +  "default": 500,
        +  "description": "plotPCA's ntop: the PCA uses this many genes with the largest variance of the transformed values. Only applies when method is DESeq2.",
        +  "minimum": 2,
        +  "type": "number"
        +}
      • changedInput schema / properties / sfType / description
        Previous value: -"size factors: median of ratios over genes with no zero (ratio), or with zeros allowed (poscounts, for sparse data). Only applies when method is DESeq2."New value: +"size factors: median of ratios over genes with no zero (ratio), with zeros allowed (poscounts, for sparse data), or iterated to maximise the NB likelihood of all but the worst-fitting 5% of genes (iterate, when every gene has a zero). Only applies when method is DESeq2."
      • changedInput schema / properties / sfType / enum
        Previous value: -[
        -  "ratio",
        -  "poscounts"
        -]New value: +[
        +  "ratio",
        +  "poscounts",
        +  "iterate"
        +]
      • changedInput schema / properties / shrink / description
        Previous value: -"shrink the reported coefficient's log2 fold changes toward zero where the counts cannot support them (DESeq2 lfcShrink), for ranking and plotting by effect size; p-values stay the unshrunken test's. apeglm: adaptive Cauchy prior, posterior mode. ashr: mixture-of-normals prior, posterior mean. normal: DESeq2's original zero-centred Normal prior (Wald only). Only applies when method is DESeq2."New value: +"shrink the reported coefficient's or contrast's log2 fold changes toward zero where the counts cannot support them (DESeq2 lfcShrink), for ranking and plotting by effect size; p-values stay the unshrunken test's. apeglm: adaptive Cauchy prior, posterior mode (a coefficient only). ashr: mixture-of-normals prior, posterior mean. normal: DESeq2's original zero-centred Normal prior (Wald only), a contrast on the expanded model matrix. With lfcThreshold, apeglm and ashr give s-values of a false sign or a fold change inside the threshold, and normal re-tests the shrunken fit. Only applies when method is DESeq2."
      • addedInput schema / properties / transform
        Added value: +{
        +  "default": "vst",
        +  "description": "the count transformation the sample-level checks (PCA, sample distances) run on: vst (DESeq2's variance stabilizing transformation, the trend fitted on 1,000 genes; with fewer than 1,000 genes above a mean of 5 use VST), VST (varianceStabilizingTransformation, every gene), rlog (regularized log, a per-gene ridge fit, slow above ~30 samples) or normTransform (log2 of normalized count + 1, no stabilization). none skips the checks. Only applies when method is DESeq2.",
        +  "enum": [
        +    "vst",
        +    "VST",
        +    "rlog",
        +    "normTransform",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / useT
        Added value: +{
        +  "default": false,
        +  "description": "Wald p-values from a Student t on each gene's summed weights (or the sample count) minus the coefficients, instead of the normal: zinbwave's recommendation for weighted single-cell data. Wald test only. Only applies when method is DESeq2.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / weights
        Added value: +{
        +  "default": "",
        +  "description": "optional: observation weights (assays(dds)[[\"weights\"]]), the same genes and samples as `counts`, e.g. zinbwave's posterior probability that a single-cell count is not a dropout. DESeq2 divides each gene's weights by their largest and uses them in the base means, the dispersion likelihoods (samples at or below 0.01 leave the Cox-Reid term), the GLM and its tests. Only applies when method is DESeq2.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / genes / description
        Previous value: -"one row per gene: log2FoldChange, stat (DESeq2 Wald or LRT, edgeR F, voom moderated t), pvalue, padj, why padj is NA, the normalized counts per sample; DESeq2 adds baseMean, lfcSE, the gene-wise, fitted and final dispersions, whether it was refitted and with `shrink` the shrunken fold change, its SE and s-value; edgeR and voom add logCPM, the raw, prior and posterior variance (edgeR's QL dispersion) and the total df, and voom the B-statistic"New value: +"one row per gene: log2FoldChange, stat (DESeq2 Wald or LRT, edgeR F, voom moderated t), pvalue, padj, why padj is NA, the normalized counts per sample; DESeq2 adds baseMean, lfcSE, the gene-wise, fitted and final dispersions, whether it was refitted and with `shrink` the shrunken fold change, its SE and s-value (normal with lfcThreshold: the shrunken fit's p-value and padj); edgeR and voom add logCPM, the raw, prior and posterior variance (edgeR's QL dispersion) and the total df, and voom the B-statistic"
      • addedOutput schema / properties / sampleDistances
        Added value: +{
        +  "description": "DESeq2 runs only (null under edgeR and voom): the sample checks as data: the transformation and its trend, the PCA genes, percentVar, PC1 and PC2 per sample, the sample-to-sample Euclidean distance matrix over every gene and its complete-linkage clustering (leaf order, merges, heights), as the vignette's heatmap draws it; or why the checks could not run"
        +}
      • addedOutput schema / properties / samplePca
        Added value: +{
        +  "description": "DESeq2 runs only (null under edgeR and voom): plotPCA on the transformed counts (`transform`, `blind`): PC2 against PC1 per sample, one series per `pcaGroup` level, each axis labelled with its share of the variance",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "genes",
        -  "summary",
        -  "significantGenes",
        -  "upGenes",
        -  "downGenes",
        -  "testedGenes",
        -  "rankedList",
        -  "maPlot",
        -  "volcano",
        -  "dispersionPlot"
        -]New value: +[
        +  "genes",
        +  "summary",
        +  "significantGenes",
        +  "upGenes",
        +  "downGenes",
        +  "testedGenes",
        +  "rankedList",
        +  "maPlot",
        +  "volcano",
        +  "dispersionPlot",
        +  "samplePca",
        +  "sampleDistances"
        +]
    • Changedrun_discovery_programme1 field changed
      • changedInput schema / properties / hypotheses / description
        Previous value: -"each {statement, test, params, direction, prior_belief?}. test: discover_site_avoidance (params site, record?, null_model, shuffle_k/shuffles/seed under the shuffle null; direction less, greater or two-sided) or discover_codon_outliers (params gene as its library name, genetic_code, alt_init?, min_codons?; direction two-sided) or validate_gene_trait (params gene as its HGNC symbol, expression_test coexpression with trait_genes or tissue with tissues, categories as GWAS Catalog parent categories, alpha?; direction greater; needs no corpus) or discover_flag_rates (params flag as one of sigma70-strongest, splice-donor, splice-acceptor, homopolymer, tandem-repeat, long-repeat, inverted-repeat, record?, shuffle_k/shuffles/seed; direction greater, meaning beyond chance in the flag's own tail) or discover_tree_incongruence (params locus as its alignment file's name, permutations/seed; direction greater; the corpus is one aligned FASTA per locus) or discover_gene_tree_discordance (params gene as its alignment file's name, species_tree in Newick, replicates/sh_form/gamma_categories/seed; direction greater, meaning the gene fits another tree better; the corpus is one aligned FASTA per gene) or discover_reference_stability (params gene as its HGNC symbol, tissues?, neighbours?, pseudocount?; direction greater for more variable than its abundance peers, less for steadier, or two-sided; needs no corpus) or discover_annotation_contradictions (params annotation as a UniProt accession, or accession:start-end where the protein has several, feature signal or transmembrane, predictor for signal, decoding for transmembrane; direction less, meaning it scores below the experimentally confirmed features; needs no corpus) or discover_reference_concordance (params cq_table as the long-format Target,Sample,Group,Cq table itself, permutations/seed; direction greater, meaning the conditions rank the genes more alike than independent orders; needs no corpus). prior_belief: the proposer's belief before any result, one sample or a list of them (true, false, definitely true, maybe true, uncertain, maybe false, definitely false, cannot comment)."New value: +"each {statement, test, params, direction, prior_belief?}. test: discover_site_avoidance (params site, record?, null_model, shuffle_k/shuffles/seed under the shuffle null; direction less, greater or two-sided) or discover_codon_outliers (params gene as its library name, genetic_code, alt_init?, min_codons?; direction two-sided) or validate_gene_trait (params gene as its HGNC symbol, expression_test coexpression with trait_genes or tissue with tissues, categories as GWAS Catalog parent categories, alpha?; direction greater; needs no corpus) or discover_flag_rates (params flag as one of sigma70-strongest, splice-donor, splice-acceptor, homopolymer, tandem-repeat, long-repeat, inverted-repeat, record?, shuffle_k/shuffles/seed; direction greater, meaning beyond chance in the flag's own tail) or discover_tree_incongruence (params locus as its alignment file's name, permutations/seed; direction greater; the corpus is one aligned FASTA per locus) or discover_gene_tree_discordance (params gene as its alignment file's name, species_tree in Newick, replicates/sh_form/gamma_categories/seed; direction greater, meaning the gene fits another tree better; the corpus is one aligned FASTA per gene) or discover_reference_stability (params gene as its HGNC symbol, tissues?, neighbours?, pseudocount?; direction greater for more variable than its abundance peers, less for steadier, or two-sided; needs no corpus) or discover_annotation_contradictions (params annotation as a UniProt accession, or accession:start-end where the protein has several, feature signal or transmembrane, predictor for signal, decoding for transmembrane; direction less, meaning it scores below the experimentally confirmed features; needs no corpus) or discover_reference_concordance (params cq_table as the long-format Target,Sample,Group,Cq table itself, permutations/seed; direction greater, meaning the conditions rank the genes more alike than independent orders; needs no corpus) or differential_expression (params gene as its count-table ID, symbol? as papers name it for the literature query, counts and samples as the tables themselves, and design/reference/test/reduced/contrast/name/fitType/sfType/lfcThreshold/altHypothesis/cooksFilter/cooksCutoff/minReplicatesForReplace as the tool takes them; direction greater for higher in the contrast's numerator, less for lower, or two-sided; one-sided needs the Wald test at lfcThreshold 0; needs no corpus) or gene_set_overrepresentation (params set as its GMT ID, genes, geneSets as GMT text, universe?, forceUniverse?, minGSSize?, maxGSSize?; direction greater; needs no corpus) or gene_set_enrichment (params set as its GMT ID, ranked as 'gene statistic' lines, geneSets as GMT text, minGSSize/maxGSSize/exponent/scoreType/eps/sampleSize/nPermSimple/seed; direction greater for toward the top of the list, less for the bottom, or two-sided; needs no corpus). prior_belief: the proposer's belief before any result, one sample or a list of them (true, false, definitely true, maybe true, uncertain, maybe false, definitely false, cannot comment)."
  12. 3 tool updates
    • Changedauto_annotate1 field changed
      • changedInput schema / properties / libraries / description
        Previous value: -"which feature corpora to search, by id (an id from annotation-library/manifest.json, or \"legacy\" for the unsourced set). Empty means all of them."New value: +"which feature corpora to search, by id (an id from annotation-library/manifest.json, or \"legacy\" for the unsourced set). Empty means the ones the panel starts with, which is every corpus but the two it leaves off for their size, AMRFinderPlus and Rfam; name those to search them too."
    • Changedcall_cq2 fields changed
      • addedOutput schema / properties / amplificationPlot
        Added value: +{
        +  "description": "the raw amplification curves as read from the plate, one line per reaction, fluorescence against cycle",
        +  "properties": {
        +    "mark": {
        +      "enum": [
        +        "line",
        +        "bar",
        +        "point"
        +      ],
        +      "type": "string"
        +    },
        +    "rules": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "y",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "y": {
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "x": {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    "xLabel": {
        +      "type": "string"
        +    },
        +    "yLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "x",
        +    "series",
        +    "xLabel",
        +    "yLabel"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rows",
        -  "count",
        -  "failed",
        -  "meanEfficiency",
        -  "model",
        -  "cqMethod",
        -  "modelTable",
        -  "methods",
        -  "outliers",
        -  "outlierStat",
        -  "zeroCrossing",
        -  "threshold",
        -  "modelChosen",
        -  "errorNote"
        -]New value: +[
        +  "rows",
        +  "count",
        +  "failed",
        +  "meanEfficiency",
        +  "model",
        +  "cqMethod",
        +  "modelTable",
        +  "methods",
        +  "outliers",
        +  "outlierStat",
        +  "zeroCrossing",
        +  "threshold",
        +  "modelChosen",
        +  "errorNote",
        +  "amplificationPlot"
        +]
    • Addeddescribe_project
  13. 1 tool update
    • Changedantibody_position_frequencies4 fields changed
      • addedInput schema / properties / distribution
        Added value: +{
        +  "default": "germline",
        +  "description": "what each position is counted over: `germline` (IMGT's V and J alleles of `germline_species`) or `repertoire` (the bundled human OAS subset of expressed sequences).",
        +  "enum": [
        +    "germline",
        +    "repertoire"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / germline_species / description
        Previous value: -"the species whose IMGT germline alleles each position is counted over."New value: +"the species whose IMGT germline alleles each position is counted over (germline distribution only; the repertoire is human)."
      • changedInput schema / properties / rare_below / description
        Previous value: -"a residue is rare where its share of the alleles is below this fraction (abYsis's unusual-residue cut is 0.01)."New value: +"a residue is rare where its share of the alleles or sequences is below this fraction (abYsis's unusual-residue cut is 0.01)."
      • changedOutput schema / properties / domains / description
        Previous value: -"per domain: chain type, span, the germline table's allele counts, and per residue its IMGT position, 0-based sequence index, allele count, denominator, frequency, the commonest residue there and whether it is rare"New value: +"per domain: chain type, span, what the table counted (germline allele counts, or the repertoire's sequence count and subset), and per residue its IMGT position, 0-based sequence index, count, denominator, frequency, the commonest residue there and whether it is rare"
  14. 30 tool updates
    • Addedantibody_canonical_classes
    • Addedantibody_position_frequencies
    • Changedcalculate_power2 fields changed
      • changedInput schema / properties / effect / description
        Previous value: -"the standardised effect: Cohen's d for t and normal-mean tests, h for proportions, r for correlation, w for chi-square, f for ANOVA, f² for the linear model. Give a value or `effect_size` instead. Only applies when test is t or t_unequal or two_proportions or two_proportions_unequal or one_proportion or normal_mean or correlation or chisq or anova or linear_model."New value: +"the standardized effect: Cohen's d for t and normal-mean tests, h for proportions, r for correlation, w for chi-square, f for ANOVA, f² for the linear model. Give a value or `effect_size` instead. Only applies when test is t or t_unequal or two_proportions or two_proportions_unequal or one_proportion or normal_mean or correlation or chisq or anova or linear_model."
      • changedInput schema / properties / test / description
        Previous value: -"which test the experiment will be analysed with; the power answer belongs to that test and no other. Values: t (t test: one-sample, two-sample or paired, Cohen's d), t_unequal (two-sample t test, unequal group sizes, Cohen's d), two_proportions (two proportions, equal n, Cohen's h), two_proportions_unequal (two proportions, unequal n, Cohen's h), one_proportion (one proportion against a null value, Cohen's h), normal_mean (normal mean, known variance, effect d), correlation (Pearson correlation, r), chisq (chi-square goodness of fit or independence, Cohen's w), anova (balanced one-way ANOVA, Cohen's f), linear_model (linear model F test (multiple regression), Cohen's f²), t_raw (t test in raw units: difference and standard deviation), proportions_raw (two proportions in raw units: p1 and p2), anova_raw (balanced one-way ANOVA in raw units: between- and within-group variance)."New value: +"which test the experiment will be analyzed with; the power answer belongs to that test and no other. Values: t (t test: one-sample, two-sample or paired, Cohen's d), t_unequal (two-sample t test, unequal group sizes, Cohen's d), two_proportions (two proportions, equal n, Cohen's h), two_proportions_unequal (two proportions, unequal n, Cohen's h), one_proportion (one proportion against a null value, Cohen's h), normal_mean (normal mean, known variance, effect d), correlation (Pearson correlation, r), chisq (chi-square goodness of fit or independence, Cohen's w), anova (balanced one-way ANOVA, Cohen's f), linear_model (linear model F test (multiple regression), Cohen's f²), t_raw (t test in raw units: difference and standard deviation), proportions_raw (two proportions in raw units: p1 and p2), anova_raw (balanced one-way ANOVA in raw units: between- and within-group variance)."
    • Changedcall_cq4 fields changed
      • addedOutput schema / properties / errorNote
        Added value: +{
        +  "description": "a plate-level note from the fit (for example a reaction the model could not fit); null when there is none",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / modelChosen
        Added value: +{
        +  "description": "the curve model the ranking chose when the model was not given; null when it was given",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / threshold
        Added value: +{
        +  "description": "the fluorescence threshold every Cq was read at; null when the Cq came from `cq_method` instead",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rows",
        -  "count",
        -  "failed",
        -  "meanEfficiency",
        -  "model",
        -  "cqMethod",
        -  "modelTable",
        -  "methods",
        -  "outliers",
        -  "outlierStat",
        -  "zeroCrossing"
        -]New value: +[
        +  "rows",
        +  "count",
        +  "failed",
        +  "meanEfficiency",
        +  "model",
        +  "cqMethod",
        +  "modelTable",
        +  "methods",
        +  "outliers",
        +  "outlierStat",
        +  "zeroCrossing",
        +  "threshold",
        +  "modelChosen",
        +  "errorNote"
        +]
    • Changedcancel_research_run4 fields changed
      • changedInput schema / properties / reason / description
        Previous value: -"why, recorded on each cancelled attempt."New value: +"why, recorded on each canceled attempt."
      • changedOutput schema / properties / cancelled / description
        Previous value: -"the hypotheses this call cancelled"New value: +"the hypotheses this call canceled"
      • changedOutput schema / properties / run / description
        Previous value: -"the whole programme as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue"New value: +"the whole program as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue"
      • changedOutput schema / properties / status / description
        Previous value: -"the cancelled run's status: counts, pending (now none of the cancelled), settled and cancelled hypotheses"New value: +"the canceled run's status: counts, pending (now none of the canceled), settled and canceled hypotheses"
    • Changedcheck_invariants2 fields changed
      • changedInput schema / properties / require_start / description
        Previous value: -"with require_frame: the first codon must be a start codon. Advanced."New value: +"with require_frame: the first codon must be a start codon. Only applies when require_frame is true. Advanced."
      • changedInput schema / properties / require_stop / description
        Previous value: -"with require_frame: the last codon must be a stop. Advanced."New value: +"with require_frame: the last codon must be a stop. Only applies when require_frame is true. Advanced."
    • Addedcompare_antibodies
    • Changeddesign_ish_probes7 fields changed
      • addedInput schema / properties / kmer_canonical
        Added value: +{
        +  "default": false,
        +  "description": "count a k-mer and its reverse complement as one (jellyfish -C). Off as OligoMiner's dictionary is; for a dump it must match how the dictionary was counted. Advanced.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / kmer_dump
        Added value: +{
        +  "description": "`jellyfish dump` of a genome's k-mer dictionary, for a reference too large to count here: `jellyfish count -m 18 -L 5` then `jellyfish dump -c -L 5` keeps only the k-mers a screen at 5 acts on. Advanced.",
        +  "type": "string"
        +}
      • addedInput schema / properties / kmer_length
        Added value: +{
        +  "default": 18,
        +  "description": "k, the k-mer length counted in kmer_reference (OligoMiner's README builds 18); a dump carries its own. In nt. Only applies when kmer_reference is set.",
        +  "maximum": 31,
        +  "minimum": 8,
        +  "type": "number"
        +}
      • addedInput schema / properties / kmer_reference
        Added value: +{
        +  "description": "FASTA of the reference to count k-mers in, for OligoMiner's k-mer screen. Counted here, so a whole genome belongs in kmer_dump instead. Without either the oligos are returned with k-mer abundance UNCHECKED and the result says so.",
        +  "type": "string"
        +}
      • addedInput schema / properties / kmer_threshold
        Added value: +{
        +  "default": 5,
        +  "description": "drop an oligo holding any k-mer that occurs this many times or more in the reference.",
        +  "maximum": 100000,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedOutput schema / properties / kmer
        Added value: +{
        +  "description": "the k-mer screen's reading of each oligo it saw: its start, the highest count charged to it, and whether it was kept. Absent when no k-mer reference or dump was given"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "probes",
        -  "oligos",
        -  "oligoCount",
        -  "coveredFraction",
        -  "stages",
        -  "explanation",
        -  "coverage"
        -]New value: +[
        +  "probes",
        +  "oligos",
        +  "oligoCount",
        +  "coveredFraction",
        +  "stages",
        +  "kmer",
        +  "explanation",
        +  "coverage"
        +]
    • Addeddesign_merfish_probes
    • Changeddesign_rbs4 fields changed
      • addedOutput schema / properties / achievableMax
        Added value: +{
        +  "description": "the strongest relative strength any candidate site reached in this search, which bounds what a target above it can get",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / achievableMin
        Added value: +{
        +  "description": "the weakest relative strength any candidate site reached in this search, which bounds what a target below it can get",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / dgTotal
        Added value: +{
        +  "description": "the predicted total free energy of translation initiation (ΔG_total, kcal/mol) for the designed site; null when the model could not fold it",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "utr",
        -  "sd",
        -  "full",
        -  "spacing",
        -  "relStrength",
        -  "onTarget"
        -]New value: +[
        +  "utr",
        +  "sd",
        +  "full",
        +  "spacing",
        +  "relStrength",
        +  "onTarget",
        +  "dgTotal",
        +  "achievableMin",
        +  "achievableMax"
        +]
    • Addeddesign_xenium_probes
    • Changeddiscover_annotation_contradictions1 field changed
      • changedInput schema / properties / decoding / description
        Previous value: -"transmembrane only: which HMM-TM decoder labels the residues. N-best is left out: it takes minutes per long protein, and the corpus has 5,231. Values: viterbi (Viterbi), posterior-viterbi (Posterior-Viterbi), optimal-accuracy (Optimal accuracy). Advanced."New value: +"transmembrane only: which HMM-TM decoder labels the residues. N-best is left out: it takes minutes per long protein, and the corpus has 5,231. Values: viterbi (Viterbi), posterior-viterbi (Posterior-Viterbi), optimal-accuracy (Optimal accuracy). Only applies when feature is transmembrane. Advanced."
    • Changeddiscover_gene_tree_discordance1 field changed
      • changedInput schema / properties / replicates / description
        Previous value: -"RELL bootstrap replicates of the SH test. The smallest p it can give is 1 / replicates."New value: +"RELL bootstrap replicates of the SH test. The smallest nonzero p is 1 / replicates; a p of 0 means no replicate reached the observed difference, which evidence reads as 1 / (replicates + 1)."
    • Changeddiscover_site_avoidance1 field changed
      • changedInput schema / properties / enzymes / description
        Previous value: -"restrict the sweep to these enzymes' sites (NEB names). Empty sweeps every exact site in the catalogue; degenerate (IUPAC) sites are never swept and are listed in the result. Advanced."New value: +"restrict the sweep to these enzymes' sites (NEB names). Empty sweeps every exact site in the catalog; degenerate (IUPAC) sites are never swept and are listed in the result. Advanced."
    • Changedestimate_effect_size3 fields changed
      • changedInput schema / properties / estimator / description
        Previous value: -"Hedges' g corrects Cohen's d's small-sample bias by the exact J(df); Cohen's d is the uncorrected standardised difference; Glass's Δ standardises by the reference group's SD alone, for when the treatment changes the spread. Values: hedges_g (Hedges' g), cohens_d (Cohen's d), glass_delta (Glass's Δ)."New value: +"Hedges' g corrects Cohen's d's small-sample bias by the exact J(df); Cohen's d is the uncorrected standardized difference; Glass's Δ standardizes by the reference group's SD alone, for when the treatment changes the spread. Values: hedges_g (Hedges' g), cohens_d (Cohen's d), glass_delta (Glass's Δ)."
      • changedInput schema / properties / pooled_sd / description
        Previous value: -"standardise by the pooled SD (Student). Off averages the two variances, with Welch's df. Only applies when estimator is hedges_g or cohens_d."New value: +"standardize by the pooled SD (Student). Off averages the two variances, with Welch's df. Only applies when estimator is hedges_g or cohens_d."
      • changedOutput schema / properties / estimate / description
        Previous value: -"the standardised effect"New value: +"the standardized effect"
    • Addedfastq_qc
    • Changedfind_linear_motifs1 field changed
      • addedInput schema / properties / species
        Added value: +{
        +  "default": "",
        +  "description": "the species the protein comes from, as an NCBI Taxonomy id (e.g. 4932) or a scientific name (e.g. Saccharomyces cerevisiae), for ELM's taxonomic range filter: a motif whose class ELM does not place in that species' lineage is dropped, with its range. Empty runs no taxon filter, which is ELM's own default.",
        +  "type": "string"
        +}
    • Changedfold_guide2 fields changed
      • addedOutput schema / properties / unavailable
        Added value: +{
        +  "description": "why nothing was folded, when no scaffold is published for this nuclease; null when the fold ran",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "spacer",
        -  "sgRna",
        -  "spacerScaffoldPairs",
        -  "scaffoldIntact",
        -  "scaffoldName"
        -]New value: +[
        +  "spacer",
        +  "sgRna",
        +  "spacerScaffoldPairs",
        +  "scaffoldIntact",
        +  "scaffoldName",
        +  "unavailable"
        +]
    • Changedgenotype_pca2 fields changed
      • addedOutput schema / properties / explainedVariance
        Added value: +{
        +  "description": "the variance each reported component explains, in the data's own units (the eigenvalues)"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "coords",
        -  "explainedVarianceRatio",
        -  "sites"
        -]New value: +[
        +  "coords",
        +  "explainedVarianceRatio",
        +  "explainedVariance",
        +  "sites"
        +]
    • Changedinfer_proteins3 fields changed
      • addedOutput schema / properties / method
        Added value: +{
        +  "description": "the inference algorithm and mapping that produced these proteins, named",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / scoreColumn
        Added value: +{
        +  "description": "the column the match scores were read from, which decides whether higher or lower is better",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "proteins",
        -  "groups",
        -  "ambiguityGroups",
        -  "count"
        -]New value: +[
        +  "proteins",
        +  "groups",
        +  "ambiguityGroups",
        +  "count",
        +  "scoreColumn",
        +  "method"
        +]
    • Addedlist_research_runs
    • Changedplan_rnaseq_experiment2 fields changed
      • removedInput schema / properties / normalisation_ratio
        Removed value: -{
        -  "default": 1,
        -  "description": "w, the ratio of the two groups' normalisation factors. Only applies when method is exact. Advanced.",
        -  "minimum": 0,
        -  "type": "number"
        -}
      • addedInput schema / properties / normalization_ratio
        Added value: +{
        +  "default": 1,
        +  "description": "w, the ratio of the two groups' normalization factors. Only applies when method is exact. Advanced.",
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Changedpropagate_uncertainty3 fields changed
      • addedOutput schema / properties / firstOrderMean
        Added value: +{
        +  "description": "the expression evaluated at the input means, before the second-order correction",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / secondOrderMean
        Added value: +{
        +  "description": "the mean with the second-order Taylor correction applied, whether or not the reported mean uses it",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "propagatedMean",
        -  "propagatedSd",
        -  "confLower",
        -  "confUpper",
        -  "simulated",
        -  "permuted",
        -  "permPValues",
        -  "contributions",
        -  "gradient",
        -  "variables"
        -]New value: +[
        +  "propagatedMean",
        +  "firstOrderMean",
        +  "secondOrderMean",
        +  "propagatedSd",
        +  "confLower",
        +  "confUpper",
        +  "simulated",
        +  "permuted",
        +  "permPValues",
        +  "contributions",
        +  "gradient",
        +  "variables"
        +]
    • Changedquantify_dpcr2 fields changed
      • addedOutput schema / properties / confLevel
        Added value: +{
        +  "description": "the confidence level every interval in `rows` was computed at",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rows",
        -  "count",
        -  "flagged",
        -  "ciMethod",
        -  "partitionVolumeNl",
        -  "ratios",
        -  "volumeModel",
        -  "volumeCvPercent"
        -]New value: +[
        +  "rows",
        +  "count",
        +  "flagged",
        +  "ciMethod",
        +  "partitionVolumeNl",
        +  "ratios",
        +  "volumeModel",
        +  "volumeCvPercent",
        +  "confLevel"
        +]
    • Changedrank_tradeoffs7 fields changed
      • changedInput schema / properties / crowding / description
        Previous value: -"how isolation along a front is measured: NSGA-II's normalised distance (each gap over the objective's range, averaged), or the raw sum of gaps in each objective's own units. Values: normalised (NSGA-II (normalised)), raw (raw gaps). Advanced."New value: +"how isolation along a front is measured: NSGA-II's normalized distance (each gap over the objective's range, averaged), or the raw sum of gaps in each objective's own units. Values: normalised (NSGA-II (normalized)), raw (raw gaps). Advanced."
      • addedInput schema / properties / order
        Added value: +{
        +  "default": "crowding",
        +  "description": "what orders candidates within a front: crowding distance (how isolated each is), or exclusive hypervolume contribution (how much of the objective space the front loses without it). Values: crowding (crowding distance), hypervolume (hypervolume contribution).",
        +  "enum": [
        +    "crowding",
        +    "hypervolume"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / reference
        Added value: +{
        +  "description": "the hypervolume's reference point, one `column=value` per objective (`brightness=0, maturation=500`), each worse than every candidate. Left unset, each objective's worst value pushed out by 10% of its range. Only applies when order is hypervolume. Advanced.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / hypervolume
        Added value: +{
        +  "description": "the objective space front 1 dominates up to the reference point (hypervolume order only)",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / order
        Added value: +{
        +  "description": "what ordered candidates within a front: crowding or hypervolume",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / reference
        Added value: +{
        +  "description": "the reference point the hypervolume was measured from, and whether it was derived (hypervolume order only)"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "front",
        -  "ranked",
        -  "fronts",
        -  "counts"
        -]New value: +[
        +  "front",
        +  "ranked",
        +  "fronts",
        +  "counts",
        +  "order",
        +  "hypervolume",
        +  "reference"
        +]
    • Changedrelative_expression2 fields changed
      • addedOutput schema / properties / referenceGene
        Added value: +{
        +  "description": "the gene every target was normalised to under delta-delta-Ct; null for the models that use none",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rows",
        -  "count",
        -  "model",
        -  "genes",
        -  "groups",
        -  "test",
        -  "design",
        -  "trend",
        -  "standardPoints",
        -  "efficiency"
        -]New value: +[
        +  "rows",
        +  "count",
        +  "model",
        +  "genes",
        +  "groups",
        +  "test",
        +  "design",
        +  "trend",
        +  "standardPoints",
        +  "efficiency",
        +  "referenceGene"
        +]
    • Changedresume_research_run2 fields changed
      • changedInput schema / properties / budget_seconds / description
        Previous value: -"seconds this call may spend running tests: whole tests run until the budget is spent and the rest are deferred, so a long programme returns before a client's timeout and resume_research_run continues it. A test is never cut short and at least one runs per call. Unset: every test runs in this call. In s. Advanced."New value: +"seconds this call may spend running tests: whole tests run until the budget is spent and the rest are deferred, so a long program returns before a client's timeout and resume_research_run continues it. A test is never cut short and at least one runs per call. Unset: every test runs in this call. In s. Advanced."
      • changedOutput schema / properties / run / description
        Previous value: -"the whole programme as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue"New value: +"the whole program as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue"
    • Changedrun_discovery_programme3 fields changed
      • changedInput schema / properties / budget_seconds / description
        Previous value: -"seconds this call may spend running tests: whole tests run until the budget is spent and the rest are deferred, so a long programme returns before a client's timeout and resume_research_run continues it. A test is never cut short and at least one runs per call. Unset: every test runs in this call. In s. Advanced."New value: +"seconds this call may spend running tests: whole tests run until the budget is spent and the rest are deferred, so a long program returns before a client's timeout and resume_research_run continues it. A test is never cut short and at least one runs per call. Unset: every test runs in this call. In s. Advanced."
      • changedOutput schema / properties / report / description
        Previous value: -"the programme as text lines: registrations, runs, refusals, verdicts, literature queries"New value: +"the program as text lines: registrations, runs, refusals, verdicts, literature queries"
      • changedOutput schema / properties / run / description
        Previous value: -"the whole programme as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue"New value: +"the whole program as a sealed jane.research-run file: the ledger, every corpus input pinned by SHA-256, the last attempt at each hypothesis. Pass it back to continue"
    • Addedsimulate_rnaseq_power
    • Changedtarget_decoy_qvalues4 fields changed
      • addedOutput schema / properties / decoys
        Added value: +{
        +  "description": "how many decoy matches were scored; the FDR estimate stands on this count",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / targets
        Added value: +{
        +  "description": "how many target matches were scored",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / threshold
        Added value: +{
        +  "description": "the q-value cut-off `accepted` was counted at",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "q",
        -  "fdr",
        -  "accepted"
        -]New value: +[
        +  "q",
        +  "fdr",
        +  "accepted",
        +  "threshold",
        +  "targets",
        +  "decoys"
        +]
  15. 289 tool updates
    • First observedactivity_cliffs
    • First observedadopt_trace_calls
    • First observedalign_read
    • First observedalign_sequences
    • First observedalignment_agreement
    • First observedalignment_window
    • First observedanalyze_melt_curves
    • First observedannotate_region
    • First observedantibody_antigen_contacts
    • First observedantibody_isotype
    • First observedantibody_liabilities
    • First observedantibody_molecule
    • First observedapply_feature_file
    • First observedapply_variant_call
    • First observedassemble_index_oligos
    • First observedassemble_operon
    • First observedassembly_plan_simulate
    • First observedassess_small_molecule
    • First observedaudit_barcodes
    • First observedaudit_cds_annotations
    • First observedauto_annotate
    • First observedback_translate
    • First observedbayesian_protein_inference
    • First observedblast_project_sequences
    • First observedblast_search
    • First observedbootstrap_cq
    • First observedbrowse_region
    • First observedbuild_addgene_deposit
    • First observedbuild_assembly_report
    • First observedbuild_ena_submission
    • First observedbuild_genbank_submission
    • First observedbuild_tree
    • First observedcalculate_power
    • First observedcalculate_rnaseq_power
    • First observedcall_bases_from_trace
    • First observedcall_cq
    • First observedcall_mixed_bases_from_trace
    • First observedcancel_research_run
    • First observedcanonical_tautomer
    • First observedcheck_assay_decay
    • First observedcheck_color_balance
    • First observedcheck_golden_gate_parts
    • First observedcheck_index_pool
    • First observedcheck_invariants
    • First observedcheck_manufacturability
    • First observedcheck_methylation_block
    • First observedcheck_primer_specificity
    • First observedcheck_rows
    • First observedcheck_scorpion_stem
    • First observedcheck_value
    • First observedclassify_droplets
    • First observedclassify_grammar_part
    • First observedcluster_molecules
    • First observedcodon_optimality
    • First observedcodon_table_fetch
    • First observedcodon_usage_analysis
    • First observedcodon_usage_distance
    • First observedcompare_constructions
    • First observedcompare_molecules
    • First observedcompare_reads_to_reference
    • First observedcompare_trees
    • First observedconsensus_from_traces
    • First observedcopy_number_allele_split
    • First observedcopy_number_compare
    • First observedcopy_number_findings
    • First observedcopy_number_loh
    • First observedcopy_number_mosaicism
    • First observedcopy_number_read
    • First observedcopy_number_regions
    • First observedcopy_number_segment
    • First observedcopy_number_somatic
    • First observedcrispr_analyze_screen
    • First observedcrispr_design_guides
    • First observedcrispr_design_library
    • First observedcrispr_quantify_edits
    • First observedcrispr_score_deephf
    • First observedcrispr_score_deepspcas9
    • First observeddecompose_r_groups
    • First observeddelta_blast_smart
    • First observeddemultiplex_reads
    • First observeddescribe_discovery_corpus
    • First observeddesign_barcodes
    • First observeddesign_bisulfite_primers
    • First observeddesign_codehop
    • First observeddesign_degenerate_primers
    • First observeddesign_expression_variants
    • First observeddesign_free_codes
    • First observeddesign_fusion_site_primers
    • First observeddesign_genetic_circuit
    • First observeddesign_gibson_primers
    • First observeddesign_hcr_probes
    • First observeddesign_ish_probes
    • First observeddesign_knockout_package
    • First observeddesign_lamp_primers
    • First observeddesign_multisite_primers
    • First observeddesign_mutagenesis_primers
    • First observeddesign_oligo_plate_order
    • First observeddesign_overhang_set
    • First observeddesign_padlock_probes
    • First observeddesign_primer_pairs
    • First observeddesign_primers
    • First observeddesign_qpcr_assay
    • First observeddesign_rbs
    • First observeddesign_saturation_primers
    • First observeddesign_sequencing_primers
    • First observeddesign_split_sites
    • First observeddetect_trace_indel
    • First observeddifferential_expression
    • First observeddigest_fragments
    • First observeddigest_reaction_conditions
    • First observeddiscover_annotation_contradictions
    • First observeddiscover_codon_outliers
    • First observeddiscover_flag_rates
    • First observeddiscover_gene_tree_discordance
    • First observeddiscover_reference_concordance
    • First observeddiscover_reference_stability
    • First observeddiscover_site_avoidance
    • First observeddiscover_target_validation
    • First observeddiscover_tree_incongruence
    • First observeddomesticate_part
    • First observeddot_plot
    • First observeddot_plot_grid
    • First observeddraw_alignment
    • First observeddraw_gel
    • First observeddraw_trace
    • First observeddraw_tree
    • First observedebi_align
    • First observedenumerate_protonation_states
    • First observedenumerate_reaction
    • First observedenzyme_collection
    • First observedenzyme_cut_counts
    • First observedestimate_effect_size
    • First observedexport_barcodes
    • First observedexport_construction_record
    • First observedexport_map_svg
    • First observedexport_trace
    • First observedexport_tree
    • First observedfetch_record
    • First observedfilter_items
    • First observedfind_assemblies
    • First observedfind_linear_motifs
    • First observedfind_orfs
    • First observedfind_primer_snps
    • First observedfind_restriction_sites
    • First observedfind_star_sites
    • First observedfold_guide
    • First observedfold_rna
    • First observedfragment_ions
    • First observedfusion_pcr
    • First observedgate_droplets
    • First observedgc_content
    • First observedgene_set_enrichment
    • First observedgene_set_overrepresentation
    • First observedgenerate_conformers
    • First observedgenotype_pca
    • First observedget_construction_history
    • First observedget_open_record
    • First observedget_selection
    • First observedgibson_assemble
    • First observedgolden_gate_assemble
    • First observedgraft_antibody_cdrs
    • First observedhistory_protocol
    • First observedhumanize_antibody
    • First observedinfer_proteins
    • First observedisotope_envelope
    • First observedisotopic_composition
    • First observedligate_fragments
    • First observedlinkage_disequilibrium
    • First observedlist_databases
    • First observedlist_experiments
    • First observedlist_library
    • First observedlist_samples
    • First observedlist_sgrna_scaffolds
    • First observedlist_traces
    • First observedlist_workflow_templates
    • First observedload_record
    • First observedload_trace
    • First observedlookup_clinical
    • First observedlookup_compound
    • First observedlookup_gene
    • First observedlookup_omics
    • First observedlookup_ontology
    • First observedlookup_protein
    • First observedlookup_residue_sites
    • First observedlookup_variant
    • First observedmap_chemical_space
    • First observedmap_reaction_atoms
    • First observedmap_reads
    • First observedmask_sequence
    • First observedmatch_part_by_sequence
    • First observedmatched_molecular_pairs
    • First observedmelt_profile
    • First observedmelting_temperature
    • First observedmiqe_checklist
    • First observedmultiplex_pcr
    • First observednotebook_cross_refs
    • First observednumber_antibody
    • First observedoptimize_sequence
    • First observedpcr_amplify
    • First observedpeptide_mass
    • First observedpick_first
    • First observedplan_next_tools
    • First observedplan_rnaseq_experiment
    • First observedplan_thermocycler_program
    • First observedpopulation_ancestry
    • First observedpopulation_fst
    • First observedpopulation_site_stats
    • First observedprimer_check
    • First observedpropagate_uncertainty
    • First observedprotein_digest
    • First observedprotein_disorder
    • First observedprotein_disorder_metapredict
    • First observedprotein_membrane_profile
    • First observedprotein_profile
    • First observedprotein_properties
    • First observedprotein_signal_peptide
    • First observedprotein_topology
    • First observedquantify_base_editing
    • First observedquantify_dpcr
    • First observedquery_database
    • First observedrank_next_tests
    • First observedrank_reference_genes
    • First observedrank_strategies
    • First observedrank_tradeoffs
    • First observedread_mgf
    • First observedread_mzml
    • First observedread_rdml_run
    • First observedread_sequencing_qc
    • First observedread_structure
    • First observedread_structure_consensus
    • First observedread_variant_calls
    • First observedrecombine
    • First observedrecompute_trace_quality
    • First observedrecord_composition
    • First observedrecord_experiment
    • First observedrelative_expression
    • First observedremember_lab_preference
    • First observedresearch_run_status
    • First observedrestore_trace_file_calls
    • First observedrestriction_ligate
    • First observedresume_research_run
    • First observedreverse_complement
    • First observedrps_blast_cdd
    • First observedrps_blast_smart
    • First observedrpstblastn_smart
    • First observedrun_discovery_programme
    • First observedrun_gel_lane
    • First observedrun_gel_plate
    • First observedrun_workflow
    • First observedsave_enzyme_collection
    • First observedscaffold_network
    • First observedscan_intrinsic_terminators
    • First observedscan_motif_sites
    • First observedscan_protein_domains
    • First observedscan_sigma70_promoters
    • First observedscan_splice_sites
    • First observedscore_overhang_fidelity
    • First observedscore_rbs
    • First observedscore_spectrum
    • First observedscore_variant_effect
    • First observedscreen_contamination
    • First observedscreen_guides
    • First observedscreen_molecule_library
    • First observedscreen_oligo_structure
    • First observedscrub_restriction_sites
    • First observedsearch_literature
    • First observedsearch_molecule_library
    • First observedsearch_off_targets
    • First observedsearch_records
    • First observedselect_substitution_model
    • First observedsimulate_taqman_curve
    • First observedsize_fragments
    • First observedsummarize_rows
    • First observedsurvey_off_targets
    • First observedtarget_decoy_qvalues
    • First observedtide_quantify_indels
    • First observedtrace_raw_signal
    • First observedtransform_tree
    • First observedtranslate_sequence
    • First observedtree_statistics
    • First observedtree_taxon_annotations
    • First observedtrim_reads
    • First observedtrim_trace
    • First observedvalidate_gene_trait
    • First observedvalidate_workflow
    • First observedvariant_call_summary
    • First observedverify_construct
    • First observedverify_read
    • First observedwrite_structure_library

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources