Skip to main content
Glama

jean — Molecular Biology & Genomics

Server Details

Validated molecular biology tools: cloning, primers, CRISPR, Sanger, alignment, qPCR, phylogenetics

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 289 tools

Disambiguation2/5

With 289 tools, many have overlapping purposes: primer design (design_primers, design_primer_pairs, design_sequencing_primers, design_degenerate_primers), alignment (align_read, align_sequences, map_reads, ebi_align), trace analysis (call_bases_from_trace, adopt_trace_calls, trim_trace, recompute_trace_quality), CRISPR scoring (crispr_design_guides, crispr_score_deephf, crispr_score_deepspcas9), and database lookups (query_database, lookup_gene, lookup_protein, lookup_variant, etc.). Descriptions often explicitly distinguish them, but the sheer volume and subtle boundaries make misselection likely.

Naming Consistency3/5

All names use snake_case, which is consistent, but the pattern mixes verb_noun action names (design_primers, fetch_record, golden_gate_assemble) with noun_phrase result names (activity_cliffs, alignment_agreement, codon_optimality, melting_temperature). This mix is readable but not a single predictable convention.

Tool Count1/5

289 tools is an extreme mismatch for any single server, far exceeding the 50+ threshold for a score of 1. Even a broad molecular biology domain cannot justify this many tools without severe discoverability and selection problems.

Completeness4/5

The surface is extraordinarily comprehensive, covering sequence manipulation, cloning, PCR, sequencing analysis, CRISPR, phylogenetics, population genetics, proteomics, small-molecule cheminformatics, literature search, and lab notebook integration. Minor gaps may exist (e.g., no direct small-molecule docking or advanced structural modeling), but they are not obvious for the stated domain.

Available Tools

289 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.

ParametersJSON Schema
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

ParametersJSON 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_windowB
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.

ParametersJSON Schema
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

ParametersJSON 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
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

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, openWorldHint=false, so the safety profile is covered. The description adds some behavioral context (mirrors the pane's window/filters/cap) but does not disclose refusal conditions, cost, or sampling semantics beyond what the schema already spells out.

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?

Reasonably short and front-loaded with the core action, but the second sentence is opaque jargon ('the way the pane's own hand-offs do') whose meaning is not self-evident to an agent. Half the text is spent on a metaphor rather than actionable detail.

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 re-explained. However, for a 9-parameter tool with nested objects, the description leaves the integration path ('wire `reads` into…') vague and does not mention what an agent should expect when the window exceeds the cap or multiple alignments exist — details present only 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 every parameter (locus, min_mapq, max_reads, hide_* flags, alignment, _subject) is already documented in the schema. The description only gestures at 'the same window, filters and record cap the pileup draws' without adding syntax or defaults beyond that. 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 one window of a BAM/SAM in this project — and enumerates the three outputs (reads, depth, pair/library info). It is clear what the tool does and that it mirrors the pileup pane's window, but it never names a sibling (e.g. browse_region, alignment_agreement) to disambiguate the overlapping region-inspection space.

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 ('Wire `reads` into an alignment or a screen the way the pane's own hand-offs do') implies the downstream workflow but gives no explicit when-to-use, when-not, or named alternative relative to the many other alignment/region tools. Usage must be inferred from the pane metaphor.

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.

ParametersJSON Schema
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

ParametersJSON 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
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 description wisely spends its budget on behavior instead: Needleman-Wunsch, free end gaps, IUPAC substitution matrix, and the guarantee of identical output to the trace panel. It also discloses the output form ('two gapped rows'). No failure modes or limits are mentioned, keeping it at a strong 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 sentences, purpose front-loaded, then algorithm detail, then the parameter default. Every clause carries information (algorithm, gap policy, matrix, scope, default) and 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?

An output schema exists, so return values need not be described, and the description still names the output form. Combined with algorithm, scope, and default-parameter behavior, an agent has everything needed to invoke this correctly on a single read.

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. The description's note that `reference` unset means the current record largely repeats the schema's own wording, adding little new syntax or semantic 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?

States a specific verb+resource with explicit scope: 'Pairwise-align ONE sequencing read against a reference'. The 'ONE' qualifier and the pairwise framing distinguish it from the multi-sequence/alignment siblings (align_sequences, ebi_align, map_reads). The core operation is unambiguous from the first clause.

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 the downstream reason ('so the read can be graded') and the explicit default rule for `reference` when unset, plus a reproducibility rationale (same call as the trace editor). It does not name when to prefer a sibling such as align_sequences or compare_reads_to_reference, so context is clear but exclusions are absent.

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.

ParametersJSON Schema
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

ParametersJSON 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`
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.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; the description adds genuine context beyond that — that the engines are not fallbacks for each other, that poa emits its own consensus row, and warnings like naming the wrong substitution matrix 'is not an error the engine can raise'. It stops short of describing return structure, which the output 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.

Conciseness4/5

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

Front-loads the core distinction (two non-interchangeable engines) before the supporting detail, and every sentence about engine behavior earns its place. It is dense and somewhat long, overlapping with parameter descriptions, so not a clean 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?

For a 17-parameter tool with no required params, nested objects and an output schema, the description covers engine choice, engine-specific constraints and input sourcing well. A reader has enough to invoke it correctly, with parameter details and returns delegated 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 parameter meaning is already carried by the schema. The description reinforces the engine-to-parameter mapping and input wiring, but adds little syntax or semantics the schema lacks.

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 (multiple-sequence alignment) and then distinguishes the two engines by the question each answers, in terms an agent can act on. It is clearly separable from siblings like align_read or ebi_align because it declares itself the multi-sequence family/pile aligner.

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 explicit engine-selection guidance: poa for 'a pile of reads over one locus', progressive for 'a FAMILY of homologous genes'. It also explains how to supply input (wire upstream outputs into sequences or name library documents). It stops short of naming sibling alternatives such as align_read for pairwise work, so 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.

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.

ParametersJSON Schema
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

ParametersJSON 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
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
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.1/5.0
Behavior4/5

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

Annotations already declare read-only/non-destructive analysis, and the description goes well beyond them: it discloses what each engine computes, that only 'plate' classifies, that 'curve' skips plate normalisation and produces no verdicts, and that replicate spread rides along with every engine because it describes readings not method. It stops short of describing performance or output shape, but the behavioural disclosures are 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-loads the key fact (three engines, different questions, no fallback) before enumerating each engine, so the agent gets orientation immediately. It is dense and delivered as one long paragraph, but every clause carries information that would otherwise be lost.

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 29-parameter, three-engine tool with an output schema present (so return values need not be re-explained), the description supplies the engine semantics and the replicate-spread rule that an agent needs to choose correctly. The main omissions are cross-sibling positioning and any note on input-table requirements beyond what melt_table's own description states.

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 semantics (including 'Only applies when engine is X'). The description reinforces the engine-choice framing and the engine-independence of the replicate parameters, but this largely restates what the schema already documents, so the baseline of 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+resource ('Melt curves to melting temperature') and then precisely distinguishes the three engines by the question each answers, explicitly noting none is a fallback for another. An agent can tell the engines apart — and understand that this is a verdict-producing analysis vs. a raw peak profile — 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 strong intra-tool routing: 'plate' for verdicts, 'vertex' for a sub-grid Tm, 'curve' for peak areas, with the explicit warning that these are not interchangeable. It does not, however, contrast this tool with siblings like melt_profile or melting_temperature, so cross-tool selection 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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_tagNoappend the tag as its reverse complement, as the instrument requires for some read orientations. Advanced.

Output Schema

ParametersJSON 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

A4/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. The description adds genuine behavioral context beyond them: it discloses the auditing performed on concatenated tag+oligo products (junction homopolymer, reverse-complement 5' tetramer, synthesis length).

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 front-loaded sentences: the first states the conversion and output formats; the second states the audit scope. No filler, and the purpose precedes the caveats.

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, rich annotations, and 100% schema coverage, the description supplies the needed conceptual and audit context. It omits some minor operational details (e.g., that barcodes is required, or that primer is required with format=primer), but the schema handles those.

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 reinforces the adapter-vs-primer format, orientation, and optional spacer, but adds no syntax or constraints beyond the schema's own per-parameter 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 ('Turn index sequences into the oligos a synthesiser makes') and distinguishes its scope from index-only checks by noting it audits problems visible only after tag and oligo are concatenated.

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 assembly purpose and the audit clause, but the description never explicitly says when to choose this over siblings like design_barcodes, audit_barcodes, or check_index_pool, nor does it state prerequisites or exclusions.

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.

ParametersJSON Schema
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

ParametersJSON 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, ….

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
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.8/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 adds genuine interpretive context beyond that: readings are taken with hydrogens implicit (the form the papers assume), and an alert flags a nuisance/reactive substructure rather than being a verdict on activity or toxicity. This is real behavioral value, though it omits any note on cost/runtime for a heavy multi-descriptor computation.

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 opening clause is well front-loaded, but the bulk is one very dense run-on sentence exhaustively listing every computed output — essentially return-value enumeration that the existing output schema already supplies. Much of that list does not earn its place for tool selection 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 not be enumerated, yet the description still gives the input conventions (SMILES/molfile, one molecule per call, implicit hydrogens) and a crucial interpretation caveat about alerts. Complete enough for an agent to invoke correctly; the missing piece is explicit routing against sibling molecule 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 every parameter including the rules and alert_sets defaults. The description contributes only marginal semantics, such as clarifying that the _paper rule ids are the papers' own readings where medchem departs from them, which is largely mirrored in the schema's own rule description. 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?

Names a specific verb (assess) and resource (small molecule) and then enumerates the exact computation families: RDKit descriptors, medchem drug-likeness rules, structural-alert catalogs, formula/isotopes, QED, ESOL, SA, NP-likeness, Bemis–Murcko, BOILED-Egg. An agent can distinguish this deep single-molecule profiling tool from siblings like compare_molecules, cluster_molecules or screen_molecule_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?

Usage is implied by the scope — assess one molecule given as SMILES/molfile — but no explicit when-to-use or when-not-to-use framing is given, and no alternative (e.g. compare_molecules for pairs, screen_molecule_library for batches) is named. The 'one molecule; for an SDF pass one record' constraint lives 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.

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.

ParametersJSON Schema
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

ParametersJSON 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
distanceMapYesthe pairwise distance matrix under the chosen metric, as a heatmap

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 adds valuable behavioral content beyond that: it discloses the concrete outputs (minimum distance, error-correction guarantee, distance matrices, optional pruned subset), which is what the agent needs to know about the 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?

Front-loads the key distinction (audit existing vs design new) before enumerating outputs. The em-dash chain is slightly dense and the closing sentence is somewhat decorative, 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?

With an output schema present, return values needn't be spelled out, and annotations carry the safety profile. The description covers purpose, alternative, and the audit computations; it is complete enough for correct selection and 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 metric, prune_to_errors, required_distance and the record params. The description gestures at pruning ('subset that survives pruning to a stricter error budget') but adds no syntax or format 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 (check/audit) and resource (an index set you already have), and explicitly separates itself from the design-a-new-one path. An agent can distinguish this from design_barcodes/design_free_codes 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 use case: 'Check an index set you ALREADY have, rather than designing a new one,' and gives the scenario ('inherited from a kit or a previous experiment'). It names the alternative category rather than a specific sibling tool, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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 all of them.
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

ParametersJSON 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

A3.7/5.0
Behavior4/5

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

Annotations give readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description adds useful context by saying it "emits an annotated record" whose annotations carry into a downstream map or export, explaining why the tool is not read-only. It does not mention permissions or limits, but the core behavioral consequence (a new annotated record rather than an in-place edit) is disclosed.

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

Conciseness4/5

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

Two sentences, front-loaded with purpose and matching strategy; the second sentence efficiently covers the output behavior. The first sentence is dense and its parenthetical is heavy, 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?

For a 16-parameter, nested-schema tool with full schema coverage, annotations and an output schema, the description covers the essential purpose, the matching modes and the output record, so an agent can select and invoke it. It is only incomplete in that it gives no routing guidance against the many sibling annotation/search 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 all 16 parameters are already documented, including mode, policy, and the protein-corpus thresholds. The description adds the conceptual framing of exact vs alignment matching and the site classes it recognizes, but no syntax or edge-case meaning 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.

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 (find and name known features such as vector parts, origins, resistance markers and tags) and immediately specifies the matching strategies (exact, local alignment, both) and special site classes (Cre/loxP, Gateway att). It is clearly more than a restatement of the name, but it never names a sibling (e.g. annotate_region, audit_cds_annotations) to sharpen 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?

The description explains what the tool does and the mode variants, which implies the annotation use case, but it never states when to reach for this over annotate_region or the various find_* siblings, nor any prerequisites or exclusions. Usage is left to inference from the field descriptions.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.4/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 value beyond them: the local DB is built from every project record of the program's alphabet and E-values are computed against that database's own size, which changes how hits should be interpreted. It also states "nothing leaves the machine," a meaningful privacy/scope trait. Only minor gap is that it says nothing about result size or runtime for large projects.

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 scope and database-construction constraint before the use case and the alternative. Every sentence carries distinct information, though the middle clause about database size and E-values is dense 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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. The description supplies everything else an agent needs to choose this over blast_search and understand the E-value basis of the 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 coverage is 100%, so the schema already documents program, region/feature, maxExpect, and the query/subject shapes; baseline is 3. The description reinforces the blastn=nucleotide / blastp=protein mapping but adds no syntax or semantics the schema does not already carry.

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 a tightly scoped resource (THIS PROJECT'S OWN records), plus the concrete scope constraints: the local database is built from every project record of the matching alphabet. It explicitly names the sibling it is not (blast_search for public databases), so an agent can distinguish the two without opening schemas.

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

Usage Guidelines5/5

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

Gives the positive trigger ("ask which of my constructs, reads or proteins carry this span") and the exclusion with an alternative ("for public databases use blast_search"). When-to-use and when-not-to-use are both explicit, and the local-vs-public boundary is the exact decision an agent faces here.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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 standardised 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.

ParametersJSON Schema
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 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).
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 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.
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

ParametersJSON 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?

Beyond the readOnly/openWorld annotations, the description discloses material behavior: results reproduce R exactly (uniroot's root at R's tolerance), an unreachable target is refused with R's own message, and the response carries a power curve around the answer plus the reproducing R call. The caveat that effect_size is 'a convention, not a measurement' is honest and useful.

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 sentences mostly earn their place, but the middle enumeration of the thirteen tests and their pwr effect-size mappings is dense and partially overlaps the test enum description. Slightly heavy, though 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 present, return values needn't be explained, and the description still notes the curve and R call returned. Combined with full schema coverage and annotations, an agent has everything needed to select and 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 adds real meaning above the schema: solve_for's default resolves to the test's sample size (n/n2/N/v), and effect_size is flagged as a convention rather than a measured value. It adds framing without duplicating every field's syntax.

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+scope: 'Power and sample size for a planned experiment,' then delineates the two regimes (sizing a test vs. describing a fixed design). It enumerates thirteen tests across two families, which clearly scopes it apart from narrower siblings like 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 Guidelines4/5

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

It states the operating rule plainly ('Leave ONE quantity out with solve_for and it is solved; everything else is given'), which tells the agent how to invoke it. It gives clear context for when the tool applies but names no explicit alternatives or exclusions (e.g., vs. calculate_rnaseq_power or estimate_effect_size).

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².

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
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
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

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 the safety profile is covered. The description adds genuine behavioral context beyond that: a bad fit is surfaced next to the Cq rather than hidden, exponential-phase locators return null rather than 0 when absent, and model selection reports the winner and full ranking. It does not describe pagination or result-shape limits, but the output schema carries those.

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 are front-loaded with the core operation before moving to the fit-quality and exponential-phase details. Every sentence contributes; the middle sentence is 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 16-parameter, nested-schema tool with an output schema present, the description covers the essential behavior: what is fitted, how Cq is derived, what accompanies the result, and null semantics. It omits discussion of the many advanced tuning parameters, but those are fully documented in the 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 the schema itself documents every parameter, enum value, and default, so the description is not required to carry parameter meaning. The description restates a few concepts (Cq definitions, the classic Ct threshold) but 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?

The description states a precise verb and resource ('Amplification curves to Cq, one row per reaction') and details exactly what the tool computes: a sigmoid fit, a Cq read under seven definitions or a fluorescence threshold, plus per-reaction efficiency and fit-quality output. This is specific enough to separate it from siblings like bootstrap_cq or analyze_melt_curves 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 implied by the domain (calling Cq from raw amplification curves), but the description never names an alternative tool or states when to prefer this over e.g. bootstrap_cq or read_rdml_run. There are no explicit when/when-not conditions at the tool-selection level; guidance is limited to within-tool parameter behavior.

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.

ParametersJSON Schema
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

ParametersJSON 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 cancelled 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 cancelled. To stop a run that is advancing in budgeted slices, stop calling resume_research_run; cancel when the pending hypotheses should never run.

ParametersJSON Schema
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 cancelled 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

ParametersJSON Schema
NameRequiredDescription
runYesthe 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
statusYesthe cancelled run's status: counts, pending (now none of the cancelled), settled and cancelled hypotheses
cancelledYesthe hypotheses this call cancelled

TDQS

A4/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 runs them' and a reason is 'recorded on each cancelled attempt' in the run file, and the call 'return[s] the sealed run file'. That is a modification of the run's environment, not a read, so the description contradicts the annotation.

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

Conciseness4/5

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

The action and its scope are front-loaded in the first clause, and the routing guidance lands in the final sentence. The middle clause about e-BH and registration timing is dense and run-on, but it justifies why the operation is additive rather than destructive, so it mostly 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, yet the description still notes it returns the sealed run file. Combined with explicit when-to-use, the alternative tool, and the non-deletion/e-BH invariant, 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.

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 still adds semantics beyond the schema: unset hypotheses cancels every pending one (corroborated) and, more usefully, the invariant that answered and settled hypotheses cannot be cancelled, which constrains what ids may be passed. The nature of the returned sealed run file is also clarified.

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 ('Withdraw a research run's pending hypotheses') and states the scope precisely: all pending hypotheses or only the ones named by id. It also contrasts itself with the sibling resume_research_run, so 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?

Explicit routing is given: '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 eligibility boundary (answered and settled hypotheses cannot be cancelled), so the agent knows the conditions under which the call is valid.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
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.2/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: every violation cites the vendor article it derives from, and the whole set is scored across every chemistry generation simultaneously (with the XLEAP A-to-C dual-color shift explained). It does not discuss cost, latency, or failure modes when an instrument is unknown.

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 rhetorical opening ('Will the sequencer SEE these indexes?') and dense em-dash clauses carry real information but are stylistically inflated for the ~3 underlying ideas (per-cycle occupancy vs rules, cross-chemistry scoring, sibling distinction). It is front-loaded with the core question and contains no filler sentences, but it is longer 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?

An output schema exists, so return values need not be described, and the description covers scope, the specific rule set, multi-chemistry scoring, and the sibling boundary. For a tool with nested plumbing objects (_files/_subject) the definition is adequate, though it says nothing about how large a barcode set can be or what happens with mixed instrument assumptions.

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 schema already documents barcodes and instrument. The description nonetheless adds interpretive meaning for the instrument parameter by explaining why chemistry generation matters (a set balanced on a NovaSeq 6000 is not balanced on a NovaSeq X), which the enum list alone does 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?

The description states a concrete verb+resource: scoring per-cycle channel occupancy of a set of index sequences under a given instrument's SBS chemistry, with the specific Illumina rules cited. It explicitly differentiates itself from the sibling check_index_pool ('this is the color question alone'). 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?

It names the alternative (check_index_pool) and the condition that selects it: this tool answers the color question alone, while the sibling bundles it with distance, duplicates and hopping. That is clear routing guidance, though it stops short of stating an explicit trigger such as 'call this before ordering index oligos' or any exclusion of when this tool is unnecessary.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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. Advanced.
require_frameNolength divisible by 3 and no premature stop.
require_startNowith require_frame: the first codon must be a start codon. Advanced.
preserve_protein_ofNothe ORIGINAL coding sequence (or its protein): the result must still translate to it.

Output Schema

ParametersJSON 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/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 substantive context beyond that: every verdict reports what broke, where, and the remedy, and a false verdict is meant to halt the downstream chain. It does not discuss cost, limits, or failure modes of the check itself.

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 verdict definition and closed with the actionable gating rule. No filler; the enumerated checks double as scope statement.

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 covers the core checks plus the operational role in a workflow. It leaves the advanced/degenerate parameter cases (cai_organism pairing, gc_window locality, sequence defaulting to the open record) entirely to the schema, which is acceptable given 100% coverage but slightly thins the picture for a 16-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 16 parameters including units, ranges, defaults, and 'Advanced' markers. The description recaps the constraint categories (length/GC/CAI bounds, forbidden sites, protein preservation) but adds no syntax or format detail beyond the schema. Baseline 3 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?

The description states a specific verb ('decide whether...') and resource (a sequence's scientific admissibility) and enumerates the exact invariants checked — protein identity, forbidden sites, reading frame, length/GC/CAI bounds. That enumeration effectively separates it from general validation siblings, though no sibling tool is named 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 Guidelines4/5

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

Gives explicit workflow placement: 'Run this after any design or optimisation step, and stop the chain when `admissible` is false — never report a designed sequence without it.' That is clear when-to-use guidance with a gating rule. It does not name alternative checkers (e.g., verify_construct, check_manufacturability) or state when this is not the right tool, so it misses the exclusion half 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_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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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

A3.8/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 context beyond that: it says the verdict is computed against whatever margin the caller supplies, that no margin is imposed authoritatively, and that the default is a labelled rule of thumb traceable to a tech note rather than primary literature. It does not discuss cost or performance, but the epistemic transparency is valuable.

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?

It is front-loaded with the core concept, which is good, but it runs long and the margin-authority/provenance discussion duplicates the schema's own margin description almost verbatim. That repetition is not earning its place, and the scholarly asides dilute 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?

For a complex nested-parameter tool with annotations and an output schema, the description supplies the conceptual model, the returned values, and the margin caveat, so an agent has what it needs to call it correctly. It is nearly complete, with only the absence of explicit alternative-routing as a 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 baseline is 3. The schema already documents margin, stem_length, probe and conditions in depth; the description largely restates the same margin provenance and vendor disagreement that the schema carries, so it adds little semantic value beyond the schema despite the strong conceptual framing.

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 the Scorpion stem) and precisely what it computes: the stem-loop hairpin Tm versus the loop-target duplex Tm, framed as a relation between two structures. This distinguishes it cleanly from generic siblings like melting_temperature or screen_oligo_structure, and an agent can tell what 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 Guidelines3/5

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

The framing 'the design question is a RELATION between those two structures, not a property of either' implies when this tool is appropriate over a plain Tm calculation, and the margin discussion signals design-time use. But it never names an alternative sibling or states explicit when-not conditions, leaving the routing to inference.

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'.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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?

Annotations already declare the safe, non-destructive, open-world profile, and the description adds real context beyond them: the table is built by counting annotated CDS of a RefSeq assembly with assembly/CDS-count provenance, and the call costs a network round-trip. The phrase 'LEAVES NOTHING' reads as reassurance that nothing outside the project changes, though the agent still isn't told what happens when the organism has no table (fallback vs. error).

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 outcome in the first sentence, followed by source semantics and the handoff. The parenthetical in the second sentence and the standalone fragment about network round-trip are slightly dense/parenthetical-heavy, but each 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?

With an output schema present, return values need not be explained here, and the description still usefully points at `report.builtFrom`. It covers sources, provenance, persistence, and downstream consumption for a 7-parameter, nested-schema tool. The main omission is failure behavior for unmatched organisms or unusable `_files`/`_subject` combinations.

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 rich enum descriptions for mode/source/coverage and for organism resolution and save_as naming, so the schema carries the parameter burden. The prose adds the naming-handoff convention (`table`) and the builtFrom provenance link, but nothing the schema doesn't already say. 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: fetch a codon-usage table for a named organism and persist it into the project under a name. It also disambiguates from the surrounding codon family by naming the consumers (`codon_usage_analysis`, `codon_optimality`) rather than leaving the agent to guess which sibling builds vs. consumes 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?

Clear usage context: use this when later steps need to score against a table by name, and hand the saved name to the codon tools in `table`. It explains the ncbi-vs-kazusa selection (assembly available anywhere vs. mirror-only published tables). It stops short of explicit exclusions, e.g. when to count from project sequences or use `codon_usage_distance`/`discover_codon_outliers` instead of fetching.

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.

ParametersJSON Schema
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

ParametersJSON 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'.

ParametersJSON Schema
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

ParametersJSON 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_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.

ParametersJSON Schema
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

ParametersJSON 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 readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuine behavioral insight beyond that: alignment is step-by-step and order-sensitive, and step identity is derived from the reaction and its parameters rather than assigned, which explains why cross-format builds match. It does not address return shape or failure modes, but the annotations lower the bar.

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 scope, followed by the one non-obvious behavioral fact. No filler or 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?

With an output schema present, the description need not explain return values, and annotations cover the safety profile. It conveys the alignment semantics and cross-format behavior an agent needs to call it correctly, though it could say more about how the required 'against' parameter interacts with the focused document.

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 key, against, document, _files and _subject in detail, including the abstract vs processId distinction. The description adds no parameter-level information of its own, 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 gives a specific verb and resource ('Align two constructs' build procedures step by step, in order') and frames the question it answers, which is distinct from molecule-level siblings like compare_molecules. It stops short of explicitly naming an alternative or stating what it is not, so the differentiation from adjacent tools (get_construction_history, verify_construct) is left 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 Guidelines3/5

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

The rhetorical question 'was this built the same way as that?' implies the use case, and the format-independence note tells the agent this works across SnapGene/OpenCloning inputs. However, there is no explicit when-not guidance, no named alternative for related questions (e.g. history vs verification), and no prerequisites stated.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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

TDQS

A3.7/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 bar is lower. The description adds genuine behavioral context the annotations do not: the acceptance rule ('a variant is accepted only when every covering read agrees, so a single bad call does not become a mutation') and the deliberate default of quality_filter being off. It stops short of describing input-format handling nuances or 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?

Three sentences, front-loaded with the core action before the rationale and input formats. Slightly over-written in places ('the whole-plate answer that grading reads one at a time cannot give'), but every sentence carries information and none 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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. For a 7-parameter, nested-object tool the description adequately conveys the operation, its consensus semantics, and the fact that the reference is the step's subject. Missing only explicit routing against the crowded sibling set.

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 reads, _subject, and the phred/code/quality parameters in detail; baseline is 3. The description adds only modest framing ('Reads arrive as records or bases; the reference is the record this step runs on') without any format, ordering, or interaction 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 precise verb and resources (compare a SET of reads against ONE reference) and even describes the mechanism — align, vote consensus column by column, report differing positions with protein effect. It implicitly separates itself from per-read tools ('grading reads one at a time cannot give'), but never names the close siblings (alignment_agreement, consensus_from_traces, variant_call_summary, map_reads) an agent must choose between.

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 whole-plate answer that grading reads one at a time cannot give', which conveys set-level consensus comparison rather than per-read checking. However there are no explicit when/when-not statements and no alternatives named, which is a real gap given the dozens of overlapping read/variant/alignment siblings.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
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

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld=false, and the description goes well beyond them: it discloses that the tool refuses rather than guesses when a project has multiple files, that undefined analysis values are counted and reported instead of being plotted as zero, that chromosome X/Y numbering is read from the file header rather than assumed, that a comparison file is matched by chromosome LABEL and by COLUMN NAME, and that start/end are clamped to actual marker coverage. These are exactly the kind of non-obvious traits that affect trust in 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 the verb and resource, then layered from container-level to per-chromosome detail, so the structure is sound. It is dense and packs many clauses into single long sentences (the em-dash list of returned content), which costs some readability but every sentence carries real 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?

For a 9-parameter, nested-schema, output-schema-bearing tool, the description covers the missing connective tissue: the anonymous project parameters are handled by the schema, and the description supplies the selection semantics (file default, chromosome numbering, window vs whole-chromosome, single vs dual-file read) and the coordinate-frame caveat. Nothing needed 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.

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 semantics the schema lacks: the coordinate frame is stated globally ('NO GENOME BUILD IS ASSUMED: positions are the file's own'), which reframes start/end/chromosome for the agent. It also explains how the compare overlay's chromosome and graph matching works, beyond the per-property 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 (Read) plus the exact resource (Affymetrix copy-number container, enumerated as CNCHP/CYCHP/OSCHP/CHP) and spells out what it returns: algorithm, array, data sets/graphs, marker index, and a decimated per-chromosome summary. This cleanly separates it from siblings like copy_number_compare, copy_number_regions and copy_number_findings, which analyze or transform rather than open the container.

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 scope rather than stated: the agent can infer this is the tool that opens a copy-number file, and the `compare` parameter hints at the overlay use case. But there is no explicit when-to-use/when-not guidance and no routing to the many adjacent copy_number_* siblings (compare, findings, segments, loh). Defaults ('Unset is the file's FIRST') describe parameter behavior, not tool selection.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
countYesguides passing the region filter
guidesYesthe designed guides, scored
topSpacerYesspacer of the highest-ranked guide
totalCandidatesYescandidates found before filtering

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 a closed-world scope, so the safety profile is covered. The description adds that results include QC flags and cloning-enzyme conflicts and that the nuclease list is sourced from a real registry, which is useful context, but it says nothing about runtime cost, limits on number of guides returned, or scoring model used.

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 tightly written sentences with the action and its outputs front-loaded and no filler. It could arguably defer the registry remark, 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?

With a rich schema and an output schema, the description needn't explain return values, and it does confirm the output character. However, for a tool with a nested subject object and advanced tuning parameters, the description gives no guidance on scoping, expected scale, or how it relates to the other CRISPR design/screen 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 explains _subject, _files, nuclease (with PAM details), min_stem, region_start/end, and restriction_enzymes. The description adds only a marginal note that nuclease values come from a registry, which does not extend meaning for the advanced region/stem 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+resource ('Design and score CRISPR guides') plus the concrete outputs it produces (on/off-target scores, QC flags, cloning-enzyme conflicts), so an agent knows exactly what comes back. It does not, however, differentiate itself from close siblings like crispr_design_library or screen_guides.

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 'on the subject' — the agent can infer this designs guides for a given sequence/record. There is no explicit statement of when to choose this over crispr_design_library, screen_guides, or search_off_targets, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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

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 goes further by disclosing the mechanics: traces are decomposed into a mixture of proposed indels around each cut and abundances are fitted against the control reference, and it flags that the reported scores carry a fit quality. It does not discuss runtime, limits, or what happens with low-quality traces.

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 its three outputs before explaining the ICE method, which is the right ordering. The closing rhetorical sentence ('not whether a guide is good, but what it actually did') earns its place as a scoping cue, though it is the most expendable 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?

With an output schema present, return values need no explanation, and the description covers the workflow, the roles of control/edited/guides, and the comparability caveat around base editing. It omits the HDR-donor path, which is documented only in the schema, and gives no hint of expected input quality, a minor gap for a tool with nested objects and an 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 every parameter, including donor, base_editing, and indel_max_size, is already documented in the schema. The description adds conceptual framing (control as the reference the edited read decomposes against) but 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?

States a specific verb+resource (quantify a CRISPR edit from paired Sanger traces) and enumerates the three outputs: edit fraction, indel spectrum, and model fit. The mention of 'Synthego ICE' implicitly distinguishes it from the TIDE-based sibling tide_quantify_indels, but the sibling is never named outright, so differentiation is inferential 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?

It implies the required context (a CONTROL trace for the unedited sequence, an EDITED trace to decompose, and guide spacers) and contrasts with screening tools via 'Answers the question a screen cannot.' However, it never states when to choose this over tide_quantify_indels or quantify_base_editing, and offers no explicit exclusions or prerequisites, leaving the agent to infer usage.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

design_barcodesAInspect

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).

ParametersJSON Schema
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.
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
min_distanceNorequired minimum distance between any two barcodes — this is what buys the error correction.
filter_tripletsNoreject barcodes containing a homotriplet (AAA…). Advanced.

Output Schema

ParametersJSON 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

A3.7/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false with destructiveHint=false, which is an unusual profile for a design/compute tool and does not by itself explain behavior. The description adds a genuine behavioral guarantee ('guaranteed minimum distance', reports substitutions vs indels), but says nothing about determinism, cost, or permissions. With sparse annotation coverage 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 with no padding; every clause earns its place, and the dash clause adding the substitution/indel reporting is a meaningful payload rather than filler. Slightly terse, but efficient.

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, and it correctly focuses on what the tool produces. With 8 all-optional parameters and nested _files/_subject, the description could note it runs with sensible defaults, but for a design tool with a documented output schema 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 every parameter is already documented in the schema, including the metric enum and min_distance. The description echoes the central semantics (min_distance buys error correction, metric determines what is corrected) but adds no format or constraint 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.

Purpose5/5

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

States a specific verb (Design), resource (NGS sample-index barcodes), and scope (guaranteed minimum distance plus reporting what the set corrects). An agent can distinguish it from siblings like audit_barcodes and export_barcodes, which operate on an existing set rather than creating one.

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 'NGS sample-index barcodes' implies the context of use, and the '(DNABarcodes)' tag hints at the underlying method, but there is no explicit when-to-use, when-not, or named alternative (e.g., audit_barcodes or design_free_codes). Usage must be inferred.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.4/5.0
Behavior4/5

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

Annotations already declare the safety profile (destructiveHint=false, readOnlyHint=false, openWorldHint=false) and an output schema exists, so the bar is lower. The description still earns credit by disclosing the algorithmic behavior — hybrid degenerate-core/non-degenerate-clamp architecture and codon-usage back-translation — which tells the agent what kind of artifact it will get and why the design differs from a plain degenerate primer.

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, each load-bearing: purpose first, mechanism second, sibling differentiation last. No filler, no restatement of the name or title, and the rationale ('too diverged for nucleotide-level design') is front-loaded ahead of the mechanics.

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, an output schema and full schema description coverage, the description covers purpose, mechanism, and tool selection adequately; return values and parameter details are carried by structured fields. The only thing an agent might want stated upfront — the minimum of three aligned sequences and the mandatory codon table — lives in the schema rather than the prose.

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 supplying the conceptual model — 'degenerate core' and 'non-degenerate consensus clamp' back-translated through a codon-usage table — which is exactly the frame needed to interpret clamp_tm, core_lengths, max_core_degeneracy, base_cutoff and max_clamp_length correctly.

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 CODEHOP hybrid oligos from a block of aligned PROTEIN') with the molecular mechanism spelled out (3' degenerate core + 5' consensus clamp, back-translated through a codon-usage table). It explicitly distinguishes itself from the sibling design_degenerate_primers: '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 Guidelines4/5

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

Gives a clear selecting condition — 'for homologues too diverged for nucleotide-level design to see at all' — which routes the agent away from nucleotide-level designers and toward this tool. It stops short of naming the specific sibling tool (design_degenerate_primers) or stating explicit exclusions, so it is clear context rather than fully explicit when/when-not routing.

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

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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

A3.9/5.0
Behavior3/5

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

Annotations already declare this a safe, non-destructive, closed-world read/compute operation, so the safety profile is covered. The description adds that the output is primers with enzyme site, spacer and overhang on a Tm-matched footprint, but says nothing about how many primer pairs come back, degeneracy, or failure conditions such as an overhang that cannot be Tm-matched.

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, both front-loaded with the action and its purpose, with no filler. The second sentence is dense but does real routing work rather than restating 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?

For a design tool with an output schema, full parameter coverage, and clear annotations, the description covers purpose, inputs conceptually, and sibling relationship. Minor gap: no mention of expected output shape or the consequences of an overhang length mismatch, though the output schema carries the return 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 coverage is 100%, so every parameter including enzyme, target_tm, buffer_bases, and the overhangs is already documented in the schema. The description reinforces the concept (four-base overhang, Tm-matched annealing footprint) but adds no syntax, format, or constraint detail 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, four-base overhang) onto a Tm-matched annealing footprint. It also situates itself relative to a named sibling, so the agent can distinguish it from the many other design_* primers tools 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?

Clearly frames the use case — converting a sequence that is not yet a Golden Gate part into one — and explicitly pairs it with check_golden_gate_parts as the complement (that one rejects parts, this one creates one). It stops short of naming alternatives such as design_gibson_primers or design_primers, so there is no explicit when-not guidance.

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

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.

ParametersJSON Schema
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

ParametersJSON 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

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish a safe, closed-world read (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds meaningful behavioral context beyond them: gate parameters are MEASURED from published libraries rather than estimated, and the host/growth conditions of measurement are reported alongside the result — a provenance trait the agent could not infer from annotations.

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

Conciseness4/5

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

Two sentences, front-loaded with the pipeline in a colon-led list, then a second sentence reserved for the single most decision-relevant caveat (measured, not estimated). Dense but no filler; the em-dash clause is the only mild indulgence.

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-object tool with a large sibling set, the description covers the pipeline, the library provenance caveat, and the safety-relevant 'never estimated here' guarantee. With an output schema present, return values needn't be explained, so this is close to 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 every one of the 8 parameters (including nested _subject and _files) is already documented in the schema. The description alludes to a logic function and to library provenance but adds no syntax or format detail beyond what the schema supplies, 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 ('Design a genetic circuit') and enumerates the concrete sub-steps of the pipeline: NOR/NOT netlist synthesis, gate assignment from a Cello UCF library, dynamic-range prediction, and DNA emission. This makes it unmistakable against the many design_* and assembly_* siblings.

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 'give it a logic function and it synthesizes...' but the description never states when to reach for this versus alternatives (e.g., assemble_operon, design_codehop, verify_construct), nor any prerequisites or when-not conditions. The 'Advanced' filtering hints live 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.

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.

ParametersJSON Schema
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

ParametersJSON 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 genuine behavioral context beyond that: the underlying engine is pydna's assembly_fragments, the output is a matched primer pair per fragment rather than an assembled construct, and each primer's 5' tail is the fusion element — telling the agent this is a design/compute step, not a wet-lab or mutation step.

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 resource, with the engine citation kept as a short parenthetical and the workflow payoff in the final clause. No filler sentences and nothing repeated from the annotations or 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 complex 10-parameter tool with a fully documented schema and an output schema, the description supplies the workflow framing an agent needs: what the output is, that fragments must be ordered, and which engine is used. Minor gaps remain — it does not mention that all parameters are optional with sensible defaults or how the subject/backbone handling works — but the structured fields cover those.

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 overlap, target_tm, circular, conditions and the rest in detail. The description only reinforces fragment ordering and the Tm-matched/overhang concept; it adds little parameter-level meaning the schema does not already carry, 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?

Specific verb (design) plus resource (PCR primers for Gibson/NEBuilder/In-Fusion assembly) and a clear statement of what is produced: a Tm-matched primer pair per fragment with 5' fusion overhangs. The closing line separates it from assembly-simulation steps by framing it as the oligo-ordering step, but it never names a sibling tool (e.g. gibson_assemble, design_fusion_site_primers) explicitly, so differentiation is inferential rather than stated.

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

Usage Guidelines4/5

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

Gives a clear context of use: after a planned assembly exists, this is the step that converts it into orderable oligos, and fragments must be supplied in assembly order. No exclusions or named alternatives are provided, so an agent must still infer when to prefer this over the generic primer designers or the assembly-simulation siblings.

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.

ParametersJSON Schema
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

ParametersJSON 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 gather the survivors into the set that images best. Merges OligoMiner's tiling and its trained specificity model with iFISH's probe-set selection; each stage reports what it removed and why.

ParametersJSON Schema
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 %.
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
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.
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

ParametersJSON Schema
NameRequiredDescription
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

A4.2/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 meaningful behavioral context: multi-stage tiling, off-target screening against an alignment, gathering survivors into the best-imaging set, and reporting what each stage removed. It does not restate that alignment_sam is optional and yields unscreened oligos when absent, but that is documented 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 sentences, front-loaded with the core verb and resource. The first sentence maps the pipeline; the second adds algorithm provenance and reporting behavior. No filler, and the length is appropriate for a complex design 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 25 parameters, a nested subject object, and an output schema, the description still gives an agent the full workflow context needed to understand the tool's role. It does not spell out mode switches such as oligos_per_probe set vs unset or that screening requires alignment_sam, but those are covered in the schema and output schema, so 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 schema already documents all 25 parameters, including defaults, ranges, and enums. The description groups parameter domains—melting-temperature/G+C/composition specification, alignment screening, probe-set selection—but adds no parameter-level meaning 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: 'Design an in-situ hybridization probe against the subject.' It further distinguishes itself from sibling probe-design tools by naming ISH and outlining the tiling, screening, and set-selection scope. 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 for when to use it: designing ISH probes against a subject, with optional alignment-based screening and probe-set selection. It does not explicitly name alternatives such as design_hcr_probes or design_padlock_probes, nor does it state when not to use it, so it lacks exclusions.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_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.

ParametersJSON Schema
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

ParametersJSON 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, destructiveHint=false, openWorldHint=false. The description's 'A design/write' confirms the write nature but adds no side-effect, mutation-of-state, or licensing/rate context beyond what annotations convey; an output schema covers the return. Adequate but thin.

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, mechanism front-loaded ahead of the terse write note. Efficient with no redundancy; the trailing 'A design/write' matters but is minimal.

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?

For a 39-parameter design tool with full schema coverage, non-destructive annotations, and an output schema, the description is complete enough to invoke but omits any note on what the design produces conceptually (primer set, coverage failure modes) or the meaning of dominant knobs like mutation_coverage_weight.

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 (including the advanced salt/Tm/score-weight knobs) are documented in the schema itself. The description only alludes to the organism usage table, adding nothing beyond the schema's `organism` description. 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?

States a specific verb (Design) and resource (QCLM multi-site oligos) and explains the mechanism ('one primer per mutated site, all annealing in one reaction'). It does not name the adjacent siblings (design_mutagenesis_primers, design_saturation_primers, design_fusion_site_primers), so the boundary is left 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 Guidelines2/5

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

No when-to-use, when-not-to-use, or alternatives are given, despite a large cluster of primer-design siblings where routing matters. The implicit use case (multi-site mutagenesis) is inferable 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_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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.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 real behavioral context beyond that: the search is 'greedy-plus-steepest-ascent', it runs on 'real measured data', and it makes 'no claim of finding the optimum' — an honest disclosure of the heuristic nature and non-optimal guarantee that an agent would otherwise assume away.

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 before the sibling comparison and the algorithmic caveat. It is dense but every clause carries information; the trailing 'real measured data, a heuristic path, no claim of finding the optimum' is slightly list-like but earns its place as the honesty caveat.

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 8 parameters, a nested subject object, an output schema, and full annotation coverage, the description supplies what the structured fields cannot: the heuristic nature of the search and the explicit alternative tool. Nothing critical is missing for correct invocation, though runtime/determinism nuances are only implied.

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 size, fixed, candidate_pool, enzyme, dataset, start_from) is already well documented in the schema. The description reinforces the `fixed` semantics ('junctions you cannot change, such as a destination vector's own overhangs') but adds little else beyond what the schema supplies, so 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 and resource ('Design a high-fidelity Golden Gate overhang set') plus the scope ('of a given size'). It also names the sibling score_overhang_fidelity and draws the line between them ('that grades a set you already have, this proposes one'), so an agent can distinguish the two 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 routes the agent: use this when you need to propose a set, use score_overhang_fidelity when you already have one to grade. It also names the 'optionally pinning junctions you cannot change' branch, telling the agent when the fixed-vector case applies. The alternative and its selection condition are stated, not inferred.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.6/5.0
Behavior4/5

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

Annotations declare non-read-only, non-destructive, closed-world, which the description does not contradict; it adds real behavioral context by disclosing the scoring dimensions, that weights drive the penalties, the task:existing branch, and that output feeds a downstream pcr_amplify. It stops short of saying whether results are persisted to the project/notebook, which matters given readOnlyHint=false on what reads like a pure compute 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?

Three sentences, front-loaded with the core verb and scope, then the task mode, then the downstream consumer and the sibling alternatives. The opening sentence is long and dense, but every clause carries information and nothing is redundant boilerplate.

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 39-parameter designer with an output schema, the description supplies what the schema cannot: the design intent, the task:existing branch, the downstream pcr_amplify handoff, and the sibling routing. Return values need not be explained because an output schema exists.

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 by enumerating the scored penalties (Tm, dimers, hairpins, 3' stability, repeats, clamp, specificity) that correspond to the weight_* arguments, and by framing 'weights you set' as a coherent tuning surface. It does not explain the region/target or conditions parameters 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?

States a specific verb and resource ('ranked search ... scan the open record for primer pairs') and makes the scope explicit (product-size, Tm, length, GC windows; weighted scoring; returns best N). It distinguishes itself from two named siblings, so an agent can route 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?

Gives explicit routing rules: use design_sequencing_primers for a sequencing walk, design_primers for pydna's single-pair designer, and design_primer_pairs for the Primer Designer's own ranked search. It also states the task-mode switch ('With task: existing, supply one primer and it designs the mate').

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.

ParametersJSON Schema
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

ParametersJSON 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

A4/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 agent knows it is a non-destructive write-scoped operation. The description adds value beyond that by explaining that the tool emits both primers as artifacts a sibling (pcr_amplify) can consume, i.e. what it produces and how it chains. It does not discuss storage/permissions, but the safety profile is already covered.

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 verb and target, then the emitted artifacts and downstream loop. No filler, no restatement 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?

For a 7-parameter tool with nested objects, an output schema and annotation coverage, the description is nearly sufficient — purpose, outputs and downstream chaining are all present. The one meaningful gap is routing among the many overlapping primer-design 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% and each parameter carries its own detailed description (units, ranges, pydna references), so the schema does the heavy lifting. The prose adds only the pairing concept ('forward + reverse primer pair') and no additional syntax or interaction detail, which is the baseline for full schema coverage.

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 forward + reverse primer pair to amplify the subject' — and enumerates the outputs (Tm, Ta, Taq/Phusion cycling programs). It also names the implementation (pydna `primer_design`), which distinguishes it from adjacent design tools like design_primer_pairs or design_degenerate_primers.

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 supplies workflow context ('the design→PCR→gel loop', downstream pcr_amplify), which implies when the tool fits. However, it never differentiates itself from the near-identical sibling design_primer_pairs, nor states any exclusion or prerequisite, so the agent must infer which design_* tool to pick.

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

design_qpcr_assayBInspect

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.

ParametersJSON Schema
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

ParametersJSON 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

B3.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, and the description neither contradicts nor elaborates on those. It adds useful behavioural detail about the ranking penalty and the single-site binding test, but says nothing about side effects, compute cost, or that structure_check materially changes runtime (only the schema does 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?

A single dense sentence built on em-dashes that front-loads the action (design qPCR assays) and then the output shape. Every clause carries information, though the phrasing is compact enough to read as a spec fragment rather than prose.

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?

For a 29-parameter design tool with an output schema present, the description covers purpose and result shape adequately, and the schema carries the parameter burden. What is missing is selection context: nothing tells the agent when this assay designer beats the sibling primer/probe designers, which is the main decision it faces.

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 29 parameters, and the schema descriptions are unusually thorough (units, defaults, TaqMan rationale, interaction rules such as DMSOfactor overriding dmsoMethod). The prose description adds no parameter-level 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?

States a specific verb+resource (design qPCR assays) and pins down the artifact produced: primer pair plus hydrolysis probe, ranked by penalty, with amplicon size/GC and per-oligo Tm. That differentiates it from generic siblings like design_primers or design_primer_pairs, 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 when-to-use guidance, no stated prerequisites (e.g. that a subject record is required), and no routing away from the many adjacent probe/primer designers (design_hcr_probes, design_padlock_probes, design_scorpion_stem, check_primer_specificity). The agent must infer applicability from the tool name alone.

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

design_rbsBInspect

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).

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
sdYesthe Shine-Dalgarno core
utrYesthe designed 5'UTR
fullYesUTR + CDS
spacingYesSD→start spacing
onTargetYeswhether the target strength was reachable
relStrengthYesachieved relative strength

TDQS

B3.3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the agent knows this is a non-destructive mutation. The description usefully adds the engine and folding model used, but says nothing about whether it writes to the open record, requires an existing CDS, or how the cds default interacts with the open 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 dense sentence, front-loaded with the action and objective and followed by the engine details. No filler or repetition; 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?

An output schema exists and schema coverage is full, so return values and parameters are covered. However, for a non-destructive mutation tool with a nested _subject object and 5 parameters, the description omits what actually happens on success (does it write into the record, return a sequence, etc.) and how it relates to score_rbs.

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 target_strength's scale, the cds default, and the upstream context. The description adds no syntax or interpretation beyond what the schema states, 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.

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: 'Design a 5'UTR (Shine-Dalgarno + spacer) in front of a CDS' with the concrete goal of hitting a target translation-initiation strength, and it names the underlying engine (SC-08, Turner-2004). It is clearly distinct from the scoring counterpart score_rbs, but it never explicitly names that sibling to anchor the contrast.

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 states the goal (hit a target strength) but offers no when-to-use/when-not guidance, no mention of the obvious alternative score_rbs, and no prerequisites for invoking it. The agent must infer that this is the design counterpart to score_rbs 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.7/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), and the description adds genuine method context beyond that: the two solvers and their cost tradeoff, the exact Tm model (Biopython Tm_NN over Allawi & SantaLucia 1997 DNA_NN3). It does not quantify run cost or failure modes in detail, but the algorithmic disclosure is meaningful.

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 behavior is front-loaded in the first sentence, followed by two supporting sentences on solvers and Tm method. It is appropriately brief for a 47-parameter tool, though the trailing fragment 'A design/write.' is awkward and adds nothing beyond the write annotation.

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 very complex design tool an output schema exists, so return values need not be explained, and 100% schema coverage handles the parameter surface. The description supplies the essential model-level context (shared overlap constraint, solver choice, Tm method), leaving only prerequisites such as the open-plasmid/flanking requirement 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% across 47 parameters, so the schema already documents every argument in depth. The description only gestures at the salt/buffer parameters ('under the salt correction and buffer below') without adding 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.

Purpose4/5

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

States a precise verb+resource ('Design site-saturation mutagenesis (SSM) primers') and adds the defining structural signature — one overlapping forward/reverse pair per site sharing a single reaction-level overlap and 3' temperature. This implicitly separates it from siblings like design_mutagenesis_primers and design_multisite_primers, but no sibling is named explicitly, so it falls short of a full 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 scope ('every site amplifies in the same tube') implies when this tool is appropriate versus simpler single-site designs, and it notes the default solver is fast with exhaustive 'on request'. However, there is no explicit when-to-use/when-not guidance and no named alternatives, so usage must be inferred.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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
alphaNothe target FDR: the summary counts genes below this adjusted p, and DESeq2's independent filtering maximizes rejections at 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.
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
sfTypeNosize factors: median of ratios over genes with no zero (ratio), or with zeros allowed (poscounts, for sparse data). Only applies when method is DESeq2.ratio
shrinkNoshrink 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.none
fitTypeNothe dispersion trend: parametric (asymptDisp + extraPois / mean, DESeq2's default) or the mean of gene-wise estimates. 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.
_subjectNoThe record to act on: exactly one 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.
referenceNoreference level per factor, 'variable=level' separated by commas; a factor not named takes its alphabetically first level, as R does.
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

ParametersJSON 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; 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
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
significantGenesYesgenes with padj below alpha, one per line: the gene list for over-representation analysis

TDQS

A4.1/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, and the description adds substantive computational behavior: the statistical models, outlier handling, independent filtering, optional LFC shrinkage, and version-identical fit guarantees. It still does not discuss runtime, memory, or failure modes, 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?

The description is front-loaded and fits the complexity of a 25-parameter statistical tool, with no empty filler. It is a dense single paragraph rather than structured bullets, and some algorithm-level detail could be trimmed, so it is effective but not maximally concise.

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, rich annotations, and 100% parameter description coverage, the description supplies the missing high-level context: required inputs, model choices, fidelity guarantee, and downstream handoff. It omits method-selection heuristics and edge-case behavior, but is adequate 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 all 25 parameters, including enums for method, test, shrink, and altHypothesis. The prose adds conceptual depth about the count models but does not add parameter syntax, format, or constraint information 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 opening sentence states a specific scientific operation—differential expression—and constrains it to raw RNA-seq read counts and three named count models. The method-by-method breakdown (DESeq2, edgeR-QL, limma-voom) and the handoff to gene-set enrichment make its scope distinct from generic expression or relative-expression 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?

It gives clear context for when to use it: raw counts plus a sample table with design variables, with three model choices described. It does not explicitly say when not to use it or name an alternative sibling such as relative_expression, so it falls 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_contradictionsB
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.

ParametersJSON Schema
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). 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

ParametersJSON 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

B3.4/5.0
Behavior4/5

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

Annotations (readOnlyHint, destructiveHint=false, openWorldHint=false) already establish that this is a safe, local read operation, so the bar is low. The description goes further by disclosing method limitations (von Heijne and HMM-TM are weaker than SignalP/TMHMM), a concrete performance cost (DeepSig loads 9.8 MB and runs twenty networks per protein; deepsig is far slower than the matrix), and the deliberate omission of N-best decoding. It also documents the built-in self-check whose calls are false by construction, which is valuable behavioral context for interpreting results.

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

Conciseness2/5

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

The description is a wall of run-on sentences packed with parenthetical methodology. While the purpose is nominally front-loaded, the reader must parse a single sprawling sentence about conformal p-value formulas and predictor internals to extract operational meaning. The statistical detail crowds out the actionable guidance an agent needs first.

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 instead supplies thorough methodological context: what a contradiction means, how p-values are computed and corrected, and the self-check. For a 7-parameter statistical tool with nested subject objects, this is close to complete; the only gap is that it never states prerequisites or the intended workflow position.

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 earns above-baseline credit by adding rationale the schema lacks: it explains why N-best decoding is excluded ('takes minutes per long protein, and the corpus has 5,231'), why BH is the default (conformal p-values against one calibration set are positively dependent), and the cost difference between the two signal predictors. It does not address _files or _subject, but those are covered 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?

The opening clause gives a specific verb and resource: 'Find the signal peptides or transmembrane segments ... that a sequence predictor contradicts.' That is enough to separate it from sibling annotation tools such as protein_signal_peptide or protein_topology, which merely report predictions rather than testing UniProt against a predictor. The density of the rest of the sentence obscures the purpose somewhat, but the core action 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 Guidelines2/5

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

There is no explicit 'use this when...' statement and no routing to or from the many related sibling tools. The closest thing to guidance is the interpretive caveat 'a disagreement between two models, to be read, not a correction of UniProt', which explains how to treat the output rather than when to invoke the tool. An agent must infer the use case from the methodology paragraph.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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 p it can give is 1 / replicates.
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

ParametersJSON 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.5/5.0
Behavior5/5

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

Beyond the 'readOnlyHint' provided in annotations, the description reveals critical behavioral information, such as the underlying maximum likelihood fitting process, the fact that it compares the species tree to two nearest-neighbor rearrangements, and the practical runtime ('About a second of fitting per gene').

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 technically thorough, but its length and high density of specialized jargon (Shimodaira–Hasegawa, GTR + Γ, etc.) make it verbose. While every sentence contains valuable information, the pacing is slow due to the sheer volume of methodological 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 complexity of the biological domain and the number of advanced parameters, the description is exceptionally complete. It covers the methodology, the interpretation of results, the scope of the analysis (122 great-ape genes), and the required input linkages.

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 schema coverage is 100%, the description adds vital conceptual linkages. It confirms that 'Each named alignment file is one gene, its records the taxa, named as the species tree's tips,' cementing the required relationship between the two main inputs.

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 tool explicitly states its purpose: 'Find the genes whose own alignment rejects the species tree.' This highly specific goal, coupled with the detailed mention of the statistical methods (SH test, GTR+Γ), clearly distinguishes it from similar tree analysis tools in the sibling list.

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 excellent guidance on interpretation, cautioning the user that a rejection might be due to incomplete lineage sorting, hidden paralogy, or alignment error, not just a clear call. This context guides the agent on when the tool's output should be trusted and how the results should be read.

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.

ParametersJSON Schema
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

ParametersJSON 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 normalise 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'.

ParametersJSON Schema
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

ParametersJSON 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.4/5.0
Behavior5/5

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

With annotations already declaring readOnlyHint=true, openWorldHint=false, and destructiveHint=false, the description adds substantial methodological context: the ranking procedure, p-value correction, ranker outputs, null interpretation, and the limitation that tissue medians obscure within-tissue variability. It goes well beyond the annotation-level safety 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 description front-loads the purpose and then explains method, rankers, null behavior, and scope caveats. It is dense but mostly earns its length; a few methodological details could be tightened, but it is appropriately sized for an 8-parameter statistical discovery 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 output schema is present and the input schema has 100% description coverage, the description need not detail return values or every parameter. It supplies enough conceptual and methodological context for an agent to understand what question the tool answers and when its result is applicable.

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 genes, tissues, alpha, correction, neighbours, and pseudocount in detail. The description reinforces concepts like pseudocount and neighbour ranking but does not add parameter-specific 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 gives a precise verb-plus-resource purpose: it asks whether reference/housekeeping genes are more or less variable across human tissues than abundance-matched genes on GTEx v8 median expression. It also distinguishes the scope from sibling analyses by stating it answers 'across tissues', not 'across samples of one tissue'.

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 states the applicable scope and the key limitation: tissue medians hide within-tissue variation, so the tool answers an across-tissue question rather than a within-tissue one. It does not explicitly name or route to a sibling alternative such as rank_reference_genes, so it falls short of full when-to-use/when-not guidance.

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 catalogue 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.

ParametersJSON Schema
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 catalogue; 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

ParametersJSON 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.6/5.0
Behavior5/5

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

Annotations only declare read-only, non-destructive, closed-world. The description adds what those annotations cannot: multiple-testing behavior (FDR controlled across every sequence/site pair, with BH vs BY choices described in the schema), that only exact sites are swept while degenerate IUPAC sites are excluded and merely listed, and the statistical meaning of each null. This is meaningful disclosure beyond structured 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?

Purpose is front-loaded in the opening sentence and every subsequent sentence carries information: the biological interpretation, then the three nulls with their rationale. The sentences are long and clause-dense, and the null explanation partially overlaps the enum descriptions, but there is little outright 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 an output schema present, return formatting is already covered; all 13 parameters have full schema descriptions; and annotations cover the safety profile. The description adds the conceptual model (nulls, FDR, exact-vs-degenerate handling) an agent needs to call this statistical tool correctly, leaving no meaningful 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 goes further by explaining what the null_model alternatives actually mean statistically (order-0 vs k-let preserving vs maximal-order Markov) rather than just restating the enum labels. It does not add much for the other parameters, which 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?

The first sentence gives a specific verb (sweep) and resource (every exact recognition site in the NEB catalogue), plus the distinctive output (avoided/enriched sites vs a stated null, with FDR control). That combination is clearly separable from siblings like find_restriction_sites or enzyme_cut_counts, which merely report occurrences without a null model or significance testing.

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 supplies strong context for use — avoidance as evidence of restriction-modification systems, and rarity as a property a design can rely on — and explains why one would pick each null (shuffle keeps dinucleotide skews in the null rather than reporting them as findings; maximal follows published R'MES practice). It stops short of naming a sibling tool or stating explicit when-not conditions, which is the only gap.

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.

ParametersJSON Schema
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

ParametersJSON 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 ·.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.1/5.0
Behavior4/5

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

Annotations already declare this a safe, non-destructive read, so the description's job is to disclose rendering behavior — and it does: identity shading is defined as column-agreement, nucleotide colours are ignored over protein rows, and the conservation line is drawn under the block. It does not discuss output size or performance limits beyond the windowing hint, which is already partly 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 outcome and followed by the upstream wiring hint and the windowing constraint; no filler. Slightly dense with parenthetical asides, but 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-format explanation is unnecessary, and the 11-parameter schema is fully described. The description supplies the missing workflow context (upstream producer and the windowing caution). Remaining gap is the absence of explicit routing against the nearest sibling, alignment_window.

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 (from, rows, scheme, columns, ruler, conservation, etc.). The description reinforces the meaning of `scheme` (shading by column agreement) and `conservation`/`ruler` conceptually, but adds little syntax or default information 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.

Purpose5/5

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

States a specific verb (Draw) and resource (a block of an alignment) and immediately specifies the artifact produced — an SVG figure — plus the visual elements rendered (named rows, identity shading, ruler, conservation line). The 'alignment' resource is unique among the draw_*/export_* siblings, so an agent can pick 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 Guidelines4/5

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

Gives a clear prerequisite (wire `alignedSequences` from align_sequences) and actionable scoping advice ('Name the window around whatever you are asking about... a 2,000-column alignment drawn at once shows nothing'). It does not, however, name a sibling alternative such as alignment_window or alignment_agreement, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.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 the safety profile is covered. The description adds genuine behavioral context beyond that: fragments the calibrating curve cannot place are COUNTED in offScale and never drawn at the well, and migration uses 'the validated pydna model'. This discloses non-obvious output 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-loads the core action in the first sentence, then layers in input wiring and the offScale edge case. Four sentences with little waste, though the offScale/well detail is dense jargon that 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 not be described, and the 12 parameters are fully covered in the schema. The description supplies purpose, input sources, and the offScale behavior; its only notable gap is the lack of explicit differentiation from sibling gel 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 (ladder, stain, labels, dna_form, mobility_model, etc.) is already thoroughly documented in the schema. The description only weakly adds meaning by naming fragments/lengths as lane sources; the 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?

States a specific verb and resource — 'Run an agarose gel and photograph it' — and describes the output as a gel-doc image with ladder marks and lane names. It clarifies scope by noting it draws 'the same plate the gel panels draw', but it never explicitly distinguishes itself from the closely related run_gel_lane / run_gel_plate siblings.

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 input wiring guidance ('Wire `fragments` from a digest or `lengths` from an assembly into `lanes`'), which tells the agent what to feed it. However, there is no explicit statement of when to prefer this tool over run_gel_lane, run_gel_plate, or other gel-rendering siblings, so the routing decision is left 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.

ParametersJSON Schema
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

ParametersJSON 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.1/5.0
Behavior4/5

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

Annotations already cover the read-only, non-destructive safety profile. Beyond that, the description adds meaningful behavioral context: the figure uses the same geometry as the Chromatogram tab, and a file with no confidence draws no quality bars. These are real behavioral traits not captured by 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, then the geometry rationale, then the sizing advice. Each sentence carries weight, though the Chromatogram-tab sentence is partly flavor 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-value explanation is not needed, and annotations cover the safety profile. Combined with fully documented parameters, the description is complete for an agent to call this rendering tool correctly; only explicit alternative-tool 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% and the schema already explains every parameter richly (from, bases, width, palette, quality, etc.), including the clamping and zoom behavior. The description adds no parameter-level detail beyond what the schema provides, 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 (draw) and resource (a window of a Sanger read as an SVG figure) and enumerates exactly what the figure contains: dye traces, Phred bars, and a base ruler. This clearly distinguishes it from siblings like draw_alignment, draw_gel, or draw_tree without the agent needing to open 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 explicit usage context: 'Name the window around whatever you are asking about — a mutation site, a trim bound, an ambiguous call' and warns that a whole read drawn at once shows nothing. It does not name a specific alternative tool to use instead, but the when-to-use framing (zoomed windows around a question) is clear and actionable.

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.

ParametersJSON Schema
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

ParametersJSON 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 the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds genuinely new behavioral context: the figure reproduces the phylogeny panel's layout exactly, and the choice of phylogram vs cladogram governs whether a scale bar appears — details not derivable from the 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?

Three sentences, front-loaded with the verb+resource and output format, then the panel-parity value proposition, then the input wiring instruction. No filler; 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?

With an output schema present, return values need not be explained, and the 100%-covered parameter schema handles the 13 inputs. The description covers what the tool produces (SVG figure) and its input source, leaving only minor gaps such as whether downstream tools consume the figure directly.

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 of the 13 parameters is richly documented in the schema itself (layout enum rationale, branch_lengths/scale-bar coupling, min_support gating). The description only gestures at tip names, support and scale bar, adding little beyond what the schema already says, 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?

States a specific verb and resource (draw a tree as an SVG figure), then enumerates the layouts and the phylogram/cladogram distinction so the agent knows the exact output shape. It also names the sibling tools whose output feeds it (build_tree, edit_tree), separating it from neighbors like export_tree or transform_tree 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?

It tells the agent where the required `newick` comes from ('Wire newick from build_tree or edit_tree') and gives a real selection rule in the unrooted case (only honest layout when no root was inferred). There is no explicit when-not guidance or contrast against sibling export/comparison tools, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
countYeshow many enzymes resolved — branch on this rather than counting the array
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?

The annotations already establish a read-only, non-destructive, non-open-world operation, so the safety profile is covered. The description adds useful behavioral detail: it resolves the collection by name, reports which enzymes the cut catalog can and cannot resolve, and when a record is open reports cut counts. It also discloses default behavior when no name is given.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and then covers outputs and default behavior. It is somewhat long but each sentence carries distinct information about resolution, reporting, or default scope. It could be slightly tighter, but it is 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 read-only tool with three parameters, full schema coverage, annotations, and an output schema, the description is largely complete. It explains what is resolved, what is reported, and what happens when no collection is named. Remaining gaps around sibling alternatives are minor because the annotations and schema cover much of 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 parameter descriptions already document name, _files, and _subject in detail. The description reiterates the unnamed-collection default but adds no syntax or format information beyond what the schema already provides. This is the baseline when the schema carries 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: resolve a saved enzyme collection to the enzyme names in it. It also distinguishes the outcome from siblings by explaining that it reports resolvable versus unresolvable enzymes and, when a record is open, per-enzyme cut counts. An agent can identify this as a collection-lookup tool rather than a design or digestion 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 gives a clear use context: later steps can scan, digest, or design with a named collection instead of relying on current selection. It also explains the default behavior when the collection is unnamed. However, it does not explicitly name alternatives such as save_enzyme_collection or enzyme_cut_counts, 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.

enzyme_cut_countsC
Read-only
Inspect

Per-enzyme cut counts on the open plasmid (the EcoRI² superscript-badge numbers).

ParametersJSON Schema
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

ParametersJSON 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, standardised 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.

ParametersJSON Schema
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 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 Δ).hedges_g
pooled_sdNostandardise 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

ParametersJSON 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 standardised effect
intervalYesthe confidence interval: level, low, high

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: the default estimator, that a column can be subtracted row-by-row before analysis (delta-Ct), that the design is sized both at the estimate and at the interval limit nearest zero, and what the output feeds into.

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 ('The effect a power calculation needs...'), and the second sentence cleanly covers the return/handoff. The prose is dense and jargon-heavy with a provenance aside ('effectsize 1.0.3, reproduced'), but each clause carries substantive 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 not be spelled out, and the description still notes what the result is used for. For a 16-parameter statistical tool with full schema coverage, the description gives enough to call it correctly; the main gap is the absence of explicit alternatives/preconditions.

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 estimator choices, paired/pooled_sd constraints and group/reference defaults. The description echoes the estimator default and the subtract-for-delta-Ct behavior but adds little parameter syntax or format detail beyond the schema, 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?

States a specific verb (estimate/measure) and resource (effect size from pilot data) and immediately frames it against the alternative ('measured from a pilot instead of guessed'). It also distinguishes itself from the sibling calculate_power by noting it 'Returns the `design` calculate_power takes', so an agent can place it in the workflow 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?

Clear context: use this when you have pilot measurements and need the effect size a power calculation requires, and it explicitly hands off to calculate_power. It stops short of naming when NOT to use it or listing other alternatives (e.g. calculate_rnaseq_power), so no explicit exclusions.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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 plasmid's circular map to a publication SVG string — the same figure the Export panel draws, with the same knobs and the same defaults. Give it enzymes to draw the outer restriction-site ring.

ParametersJSON Schema
NameRequiredDescriptionDefault
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.
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.
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_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

ParametersJSON Schema
NameRequiredDescription
svgYespublication SVG string
sitesYescut sites drawn in the outer ring
widthYesrendered width in px
heightYesrendered height in px — taller than the width when a legend strip was added

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 and destructiveHint=false, so safety is covered. The description adds meaningful context beyond them: the output matches the Export panel figure and honours 'the same knobs and the same defaults', which is a fidelity/reproducibility claim. It doesn't address whether the operation requires an open record or how large a figure is emitted, but the annotations carry the safety burden.

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 verb and resource, then one concrete behavioural hook. 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 a 100% schema coverage and an output schema present, return values and parameter details are handled elsewhere, so the short description is nearly sufficient. The one soft spot is that it frames the input as 'the open plasmid' while the schema exposes _subject/_files for supplying records, leaving a minor ambiguity about which record is rendered.

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 defaults and enums; baseline is 3. The description only echoes the enzymes parameter ('Give it enzymes to draw the outer restriction-site ring'), adding no syntax or resolution 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 (render) and resource (the open plasmid's circular map) with a concrete output form (publication SVG string). The 'Export panel draws' framing further disambiguates it from sibling exporters like export_tree, export_trace, and 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 Guidelines3/5

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

The description implies usage context (rendering the open plasmid's figure at Export-panel fidelity) but names no alternatives and gives no when-not conditions. An agent must infer that this is the tool for circular plasmid figures rather than being routed explicitly.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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.
_subjectNoThe record to act on: exactly one 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

ParametersJSON 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
Behavior5/5

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

Annotations cover the safety profile (readOnly/destructive/openWorld), and the description adds substantial behavioral context beyond them: ELM context filters applied (chance-probability cutoff, family selection, globular-domain filter), refusal behavior when filterInDomains is set with no domain source, and the exact-sequence-checksum requirement for structuralContext that causes the call to refuse on mismatch.

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?

Information-dense and front-loaded: the core definition comes first, then the sibling exclusion, then execution/filter behavior. It is long for a description but nearly every clause carries routing or behavioral value; a little tightening of the final sentence about InterProScan return shape would help.

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 9-parameter tool with nested objects and an output schema (so return values need not be explained), the description covers purpose, scope boundary, the sibling alternative, execution locality, and the filter/refusal behaviors an agent must know to call it correctly. 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 description coverage is 100%, so the schema already documents every parameter (defaults, ELM semantics, the 'none' literal, format examples). The description largely restates what the schema provides (the globular-domain filter, the cutoff) and adds no additional parameter syntax or constraints, 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+resource (find short linear motifs in a protein) and defines the scope precisely: 3-11 residue functional sites (degrons, docking sites, targeting signals, cleavage/modification sites). It explicitly demarcates itself from the sibling domain scanner, noting these are 'sites a profile-HMM domain scan cannot see' and naming scan_protein_domains as the alternative.

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-to-use and when-not-to-use: 'It does NOT scan for DOMAINS — for those call scan_protein_domains.' It also discloses the execution model ('Runs ELM's own class patterns ON THIS MACHINE; only the class table is fetched') so the agent knows this is local, not a remote submission, and explains that scan_protein_domains returns domains in the exact form this tool's `domains` param expects.

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).

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
orfsYesthe ORFs (start, end, frame, strand)
countYesnumber of ORFs found
longestYeslength of the longest ORF in bp

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, destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: it scans both strands and produces origin-spanning ORFs when the subject is circular. It says nothing about the result format, though 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.

Conciseness5/5

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

A single sentence with zero waste, front-loading the verb and resource and qualifying it with the strand/circular behavior in the same breath.

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 read-only profile, the description carries little remaining burden. It covers the strand and circular semantics; only a hint of when to prefer it over other find_* 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%: min_size ('minimum ORF size. In bp.'), alternative_starts (GTG/CTG acceptance), and the _subject/_files selector are all documented in the schema. The description adds no parameter detail beyond what the schema already provides, 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 ('Find open reading frames') plus the meaningful scoping detail that it scans BOTH strands. It doesn't explicitly name or contrast with sibling finders like find_linear_motifs or find_star_sites, 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 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 stated prerequisites, and no named alternatives among the many other find_*/scan_* tools. The parenthetical about circular/origin-spanning is a behavior note, not usage guidance.

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.

ParametersJSON Schema
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

ParametersJSON 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).

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
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/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 value beyond that: the energy model (Turner 2004 nearest-neighbour parameters, kcal/mol) and cross-validation against ViennaRNA 2.7.2, plus the fact that it reports pairing rather than a score. It stops short of discussing performance or limits, hence a 4.

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 rationale, then methodology. Every sentence carries information and none is filler, though the third sentence's tool-version detail is slightly dense.

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 annotations cover safety. The description still supplies the scientific framing, the output content (paired bases), the energy model, and scaffold-selection context, leaving nothing essential for a correct invocation 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 spacer, sg_rna, nuclease, and the _subject/_files references. The description adds only loose context (folding 'the spacer alone, and the whole sgRNA') that maps to the sg_rna flag, 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?

States a specific verb (fold) and resource (a guide RNA / sgRNA on a published scaffold) and clarifies the deliverable: which spacer bases pair with the scaffold. The scope is narrow enough that an agent can tell it apart from the general-purpose fold_rna sibling 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 rationale (a spacer base-pairing into the scaffold physically disrupts Cas9 binding, causing a dead guide) implies when the tool is useful, but the description never explicitly states when to use it versus alternatives like fold_rna or the crispr scoring tools, nor any exclusions. Usage is implied rather than stated.

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).

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
dgYesΔG [kcal/mol]
dotBracketYesMFE structure (dot-bracket)

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 useful behavioral context beyond annotations: it names the energy model (Turner-2004) and the returned representation (dot-bracket + ΔG). It does not discuss limitations or edge cases, but for a read-only folding computation this is a helpful addition.

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 packs purpose, output format, and method with no wasted words. It is appropriately sized for a single-purpose computational 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?

With a full output schema, 100% schema description coverage, and annotations covering safety, the description supplies the remaining essential information: what is computed and how it is represented. Nothing required to invoke the 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 seq, _files, and _subject. The description adds no parameter-level meaning beyond what the schema provides. 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 states the exact computation (minimum-free-energy secondary structure), output representation (dot-bracket + ΔG), and method (Turner-2004) for an RNA/DNA sequence. It is specific, though it does not explicitly distinguish this general folding tool from sibling tools such as fold_guide or read_structure.

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 exclusions, and no named alternatives. An agent can infer that it is used when secondary structure prediction is needed, but the description provides no routing information.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false; the description adds that the result is emitted as a NEW record (so inputs are not mutated in place) and that features are carried across. It does not say what happens when homology is below the limit or that pydna may fail on incompatible ends, 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.

Conciseness5/5

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

A single front-loaded sentence plus one clause; the mechanism and output semantics come first with no filler, and the pydna attribution is compact.

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 schema documents all five parameters richly. The description is nonetheless complete on the mechanism and its non-destructive output; only failure/validation behavior 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%, including the `limit` homology threshold and the 'in order' constraint on `fragments`, so the schema carries the burden. The description adds no parameter detail beyond noting features carry across, 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 mechanism (overlap-extension/fusion PCR) plus the resource and the criterion that selects it: fragments must share terminal homology. This distinguishes it from sibling assembly tools like ligate_fragments or golden_gate_assemble, which do not rely on terminal homology, without needing to open 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 homology requirement implies when this tool applies, but no alternative is named and no when-not condition is given. An agent must infer that homolog-free joining should route to gibson_assemble/ligate_fragments instead.

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.

ParametersJSON Schema
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

ParametersJSON 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).

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_enrichmentA
Read-only
Inspect

Preranked gene set enrichment analysis (GSEA; Subramanian et al. 2005) with fgsea's multilevel p-values (Korotkevich et al.), as clusterProfiler's GSEA() runs it (enrichit 0.2.6): weighted running-sum enrichment score, normalized ES against size-matched permutations, multilevel Monte Carlo p-values down to eps, adjusted p and q-value, rank at maximum, leading-edge genes. Seeded: a seed reproduces upstream's p-values exactly, and every set is bit-identical to enrichit in R on pasilla's DESeq2 Wald statistics against every fly GO term.

ParametersJSON Schema
NameRequiredDescriptionDefault
epsNofloor for multilevel p-values; 0 estimates them however small.
seedNoseeds the permutations; the same seed gives the same p-values as enrichit.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
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.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
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.std
sampleSizeNomultilevel samples per level (made odd).
nPermSimpleNopermutations for the first, simple p-value estimate and the NES.
pvalueCutoffNoa set is significant when p and adjusted p are at most this.
pAdjustMethodNomultiple-testing adjustment across the tested sets (R `p.adjust`).BH

Output Schema

ParametersJSON 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.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false, so safety is covered; the description instead contributes reproducibility behavior — that a seed reproduces upstream p-values exactly and results are bit-identical to enrichit 0.2.6 — plus the statistical machinery (weighted running sum, size-matched permutations, eps floor). It does not mention performance cost or how large ranked lists are handled, so it falls 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 lead noun phrase is well front-loaded, but the first sentence is a single sprawling clause chain, and citations (Subramanian et al. 2005, Korotkevich et al., enrichit 0.2.6, pasilla's DESeq2 Wald statistics) consume significant space without helping an agent invoke the tool. The second sentence is pure validation prose; the valuable output enumeration is buried mid-sentence.

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 14 parameters, full schema coverage, an output schema and safety annotations, the description's burden is modest, and it does cover method provenance, outputs and determinism. What is missing is routing guidance relative to gene_set_overrepresentation and any note on cost/scale for large ranked lists, keeping 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%, so the schema already documents eps, seed, exponent, min/maxGSSize, scoreType, sampleSize, nPermSimple, pAdjustMethod and the two required inputs. The prose adds essentially no parameter meaning beyond the schema (it restates seeding/eps flooring), which is the baseline-3 case.

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 — preranked GSEA with fgsea multilevel p-values as clusterProfiler's GSEA() runs it — and enumerates the concrete outputs (enrichment score, NES, multilevel p, adjusted p/q, rank at max, leading-edge genes). The word 'preranked' plus the required ranked-statistic input cleanly separates it from the sibling gene_set_overrepresentation, which consumes a plain gene list rather than a ranked statistic vector.

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 required ranked list of statistics and the GMT gene-set input signal the scenario, but there is no explicit 'use this when you have a full ranked DE result' statement and no exclusions. The sibling gene_set_overrepresentation is never named, so the agent must infer the choice from method terminology alone.

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.

ParametersJSON Schema
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.
_subjectNoThe record to act on: exactly one 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

ParametersJSON 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

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 openWorldHint=false, so the safety profile is covered; the description adds genuinely useful behavioral context beyond them: it identifies the exact test and implementation, states that every tested set is bit-identical to enrichit in R, and notes that enrichment requires passing both the p/adjusted-p and q-value cutoffs. It stops short of describing runtime cost or the size limits that drive the min/maxGSSize defaults.

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 method is front-loaded in the first clause and the returned statistics are enumerated compactly, so the key facts land early. The closing sentence about pasilla/Fly GO bit-identity is a trust signal that is more validation than actionable guidance and is the one part that does not fully earn its space.

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 summarises them adequately. Combined with full annotation coverage and 100% schema coverage across 11 parameters, the agent has enough to call the tool correctly; only the lack of routing guidance versus the sibling enrichment tool leaves a 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 is already documented in the schema, and the description mostly restates schema content (ratios, fold enrichment, cutoffs, background semantics). It adds some framing by tying pvalueCutoff and qvalueCutoff to the notion of 'passing both cutoffs', but no syntax or edge-case guidance 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 names a specific method (one-sided hypergeometric over-representation against a background, clusterProfiler enricher semantics) and the exact family of outputs, so an agent can tell it is an ORA test rather than a GSEA-style scan. It never names or contrasts with the sibling gene_set_enrichment, so the boundary between the two is left for the agent to infer.

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 genes parameter is described as 'the gene list (e.g. the significant genes of a DE run)' and geneSets as GMT exports, which suggests a post-DE analysis workflow. There is no explicit when-to-use / when-not, no mention of the alternative gene_set_enrichment, and no prerequisites (e.g. ID-type matching is only mentioned inside the geneSets schema field).

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.

ParametersJSON Schema
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

ParametersJSON 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
explainedVarianceRatioYesthe share of variance each reported component explains

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld=false/destructive=false, so the safety profile is covered and the description earns credit for adding real behavioural context: the algorithmic path (Patterson/standard/centre scaling, LD pruning, float16 rounding), what is returned (per-sample coordinates plus variance explained), and calibration at 1000 Genomes scale. It stops short of operational caveats such as runtime or memory behaviour on large call sets, 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?

Two dense sentences with the purpose front-loaded and the validation footnote last; almost every clause carries information. It is jargon-heavy but not padded, and 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?

For a 13-parameter, nested-object, read-only analytical tool with an output schema present, the description covers the algorithm, the input assumptions and the expected result shape without needing to restate return values. The main omission is any routing between this tool and the other population-genetics siblings, which is minor for a correctly-scoped definition.

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 each of the 13 parameters and the baseline is 3. The description adds beyond that by weaving the key parameters into a coherent procedure (sites above a minor-allele count, LD pruning by sliding windows, per-site scaling then decomposition), clarifying how minMac/prune/scaler interact rather than restating them individually.

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+resource (principal components of a call set's genotypes) and spells out the exact pipeline that produces them, so the agent knows precisely what computation happens. It is clearly distinguishable in substance from population_fst/site_stats, but it never names an alternative sibling, so sibling routing is left implicit.

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 methodological narrative (population-structure decomposition, validated on 1000 Genomes), which tells the agent the intended context. However there is no explicit when-to-use/when-not guidance and no mention of population_ancestry or the other population-genetics siblings, so an agent must infer the choice.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
nameYesrecord name
lengthYeslength in bp
recordYesthe open sequence record (subject for downstream nodes)
circularYestopology (true = circular)
sequenceYesthe sequence 5'→3'

TDQS

A3.6/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 bar is lower. The description usefully adds the emitted output shape and the pipeline-wiring contract, but says nothing about what happens when no record is open or what conditions cause failure — a meaningful gap for a state-dependent 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?

Two dense sentences, front-loaded with the purpose and followed immediately by the consumption contract. No filler, 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?

With an output schema present and annotations covering safety, the description need not explain return values, and it correctly focuses on purpose and wiring. Only the empty-state/error behavior when no record is open 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 description coverage is 100% and the nested _subject/_files shapes are documented in the schema itself; the description adds no syntax, format, or constraint detail beyond that. Baseline 3 is appropriate when the schema carries all 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?

States a specific verb and resource — 'Return the plasmid/sequence currently open in the editor' — which is more precise than a generic fetch. The 'currently open in the editor' scope implicitly separates it from fetch_record/load_record, but no sibling is named explicitly, so an agent still has to infer 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 description gives real pipeline usage guidance ('it is the SOURCE node of a pipeline — wire its record into any downstream node's $subject'), which tells the agent how to consume the output. However, it offers no when-not guidance and never contrasts with siblings like load_record, fetch_record, or get_selection, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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
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 conceptual behavior, namely that the selection becomes its own record usable as pipeline input, but it does not disclose prerequisites such as requiring an active canvas selection, error behavior, or return details beyond 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 sentences, front-loaded with the core identity of the tool; the second sentence explains the practical purpose without redundancy. 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 a fully documented input schema, an output schema, and annotations covering safety, the description mainly needs to explain what the selection record is and how it is used. It does that well, though it could mention that an active selection is a prerequisite and what happens when none 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 pad, _subject, _files, and reverse_complement are already documented in the input schema. The description adds no additional meaning for these parameters, which is acceptable given the high coverage 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 states that the tool returns the canvas-selected region as its own record, a specific resource distinct from whole-molecule records. The pipeline-input framing further differentiates it from generic record loaders or browsers. The verb is implicit in the tool name, but the resource and scope are unambiguous.

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 how to use the result: wire its record into any node's subject so that step runs on the selection rather than the whole molecule. This gives clear context for when to call it, but it does not name explicit alternatives or when-not conditions.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: the exact grafting pipeline (find germlines, merge into acceptor, place parental CDRs) and a reproducibility claim against abnumber/ANARCI. It omits any note about input constraints or failure modes, 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.

Conciseness4/5

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

Three sentences, front-loaded with the core action before the sibling contrast and the reproducibility note. Every sentence carries weight, though the trailing ANARCI/abnumber benchmark claim is the most digressive element.

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 safety. It explains the method well for a 10-parameter tool, though it leaves the multi-domain behavior and germline-selection interaction to the schema, which is acceptable but not exhaustive.

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 parameters (top, vGene, jGene, cdrDefinition, rankByFrameworks, backmutateVernier, domain) are already fully documented. The description's mentions of closest germline V/J and grafting map onto these but add no syntax or default semantics 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 (humanize), resource (antibody variable domain), and method (CDR grafting), then spells out the internal steps. It explicitly names and contrasts with the sibling humanize_antibody, so an agent can distinguish the two without opening schemas.

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

Usage Guidelines4/5

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

Frames itself as 'the classical humanization route' and the counterpart to humanize_antibody's language model, which gives clear context for choosing between the two. It stops short of an explicit when-to-use/when-not rule or naming conditions that favor one method.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.8/5.0
Behavior4/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). The description adds real behavioral context: iterations re-score prior output, humanizing CDRs 'raises the risk of losing binding', and it reports every mutation plus what the model would change next. It stops short of 5 only by not describing rate limits or output structure beyond the mutations note.

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 method, then supporting detail. It is dense but every clause is informative; the final validation sentence adds trust context 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 complex 8-parameter tool with an output schema and nested _subject object, the description covers method, risk trade-offs, and iteration behavior. Return values need not be explained since an output schema exists; the definition is nearly 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%, so the baseline is 3. The description meaningfully cross-references parameters, tying 'keep the parental CDRs' to humanizeCdrs and 'optionally the Kabat Vernier zone' to backmutateVernier, making their purpose interpretable in the algorithm's terms.

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 (humanize) and resource (antibody variable domain) and details the mechanism: score positions against human repertoires, take highest-scoring framework residue, keep parental CDRs. This is well beyond a tautology. It does not, however, explicitly distinguish itself from the sibling graft_antibody_cdrs, 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 workflow is described and options imply different scenarios (grafting parental CDRs is implied, humanizeCdrs is flagged as riskier), but there is no explicit when-to-use/when-not-to-use statement or named alternative. Usage must be inferred from the mechanism.

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

infer_proteinsA
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.

ParametersJSON Schema
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.
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

ParametersJSON Schema
NameRequiredDescription
countYesproteins reported
groupsYesindistinguishable protein groups, best first: probability (the best member score) and accessions
proteinsYesone row per protein: accession, score, evidences counted, sequence coverage (%)
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

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 safety is covered. The description adds genuine behavioral context beyond that: it states that proteins its evidence cannot distinguish are reported as indistinguishable groups and that per-sequence coverage is computed, and cites a concrete validation target. It does not discuss runtime, memory, or input-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?

Front-loaded with the verb+resource and the validation anchor, then the algorithm steps in one dense but well-ordered sentence. Every clause describes actual behavior, though the single mega-sentence could be split for scannability.

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; it instead covers the processing logic and the salient result concept (indistinguishable groups, coverage percent). Combined with 100% schema coverage, nested parameter objects, and full annotations, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% (including defaults and enum semantics for aggregation, scoreColumn, higherIsBetter), so the schema does the heavy lifting for all 16 parameters. The description adds no parameter-level detail beyond what is already documented, 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 names a specific verb and resource (protein inference from PSMs) and spells out the pipeline it runs: peptide-to-protein mapping, best match per spectrum, per-protein score aggregation, indistinguishable groups, and percent coverage. It also anchors the method (OpenMS BasicProteinInferenceAlgorithm, PXD000001), which implicitly distinguishes it from the competing sibling bayesian_protein_inference. 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?

The detailed algorithm description strongly implies the use case (you have PSMs plus a FASTA database and want protein-level inference), but there is no explicit when-to-use, prerequisites, or routing to alternatives such as bayesian_protein_inference. 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.

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).

ParametersJSON Schema
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

ParametersJSON 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).

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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).

ParametersJSON Schema
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

ParametersJSON 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_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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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.

ParametersJSON Schema
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

ParametersJSON 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

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 context beyond that: its role as the pipeline's data-reader source and that it does not depend on editor state, plus the output wiring behavior. It stops short of noting limits around the _files/_subject handling.

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 (read a chosen document as a record) followed by the differentiator and the wiring instruction. Slightly jargon-heavy ('pipeline's data-reader source') but every sentence carries 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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. The description covers purpose, the editor-vs-file distinction, and downstream wiring, which is sufficient for a 3-parameter tool with a complex nested 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 `document`, `_subject`, and `_files` in detail. The description adds only the general framing of reading a chosen document and does not elaborate on parameter formats 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 (read) and resource (a CHOSEN project document as a record) and clarifies it targets a named file rather than the editor's open document, which differentiates it from get_open_record. It does not explicitly contrast with other read siblings like fetch_record or search_records, so sibling differentiation is only partial.

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 when-to-use context: run on a specific file 'instead of whatever happens to be open in the editor,' and tells the agent to wire the record into a downstream node's $subject. It names an implicit alternative (the open document) but offers no explicit when-not or naming of fetch_record/search_records.

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.

ParametersJSON Schema
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

ParametersJSON 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.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, not open-world), and the description adds genuinely useful behavior: it returns base calls crossed as a record, not the trace signal/peaks, so the agent knows it cannot write raw chromatogram data onward. That is meaningful disclosure beyond the annotations, though it stops short of discussing quality defaults or 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?

Four sentences, front-loaded with the read-and-return core, and no wasted preamble. The final 'a record crosses a wire as bases, and a peak cannot be written as one' is slightly ornamental but still conveys the output-type constraint.

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 isn't required, and the description covers what the tool reads, what it emits, and the signal-vs-bases constraint. It's nearly complete for a 6-param nested tool, though it leaves the project/_files/_subject plumbing 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 already documents trim, min_quality, reverse_complement, document, _files and _subject in detail. The description adds only general framing about trim bounds and quality, 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.

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 (Sanger trace .ab1/.scf/.ztr) plus the exact output shape: base calls as a record with per-base quality and trim bounds. The clause 'The trace SIGNAL stays here' sharply distinguishes it from the signal-returning siblings like trace_raw_signal.

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 says what the output enables (verify against a reference, align, gate on quality), which implies downstream usage, but it never states when to pick load_trace over alternatives such as list_traces, trim_trace, or trace_raw_signal. The usage context 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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: Ensembl records, cross-references, MyGene identifiers, UCSC assembly data, GTEx expression, or BioMart tables.

ParametersJSON Schema
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

ParametersJSON 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, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the external authorities queried (Ensembl, MyGene, UCSC, GTEx, BioMart), aligning with openWorldHint, but discloses no auth needs, rate limits, or side effects; 3 reflects adequate but minimal 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.

Conciseness5/5

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

A single front-loaded sentence with no filler. The list of data sources is dense but directly relevant, so the description is appropriately sized.

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 full parameter descriptions available, the description need not explain returns or each parameter. It gives a clear purpose and data sources, but omits any routing against the many sibling lookup tools, leaving a small contextual 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 baseline is 3. The description loosely maps to the source enum by naming the five authorities, but adds no syntax, format, or command guidance beyond what the schema already provides for query, source, limit, _subject, and _files.

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 'look up' and resource 'gene or genomic region', then enumerates the record types (Ensembl, cross-references, MyGene, UCSC, GTEx, BioMart). It distinguishes itself from protein/variant/clinical lookup siblings by resource, but does not explicitly name an alternative or scope boundary, so 4 rather than 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 when-to-use, when-not, or alternative-tool guidance is given. The list of sources implies that source selects the authority, but that is schema/enum semantics rather than usage routing, and no condition tells an agent to choose lookup_gene over lookup_variant or browse_region.

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.

ParametersJSON Schema
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

ParametersJSON 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, pathway or cell type: OLS ontologies, QuickGO annotations, Reactome pathways, KEGG entries, Rfam RNA families, CellGuide/PanglaoDB cell types and markers, or an antibody RRID.

ParametersJSON Schema
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

ParametersJSON 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 and network profile is covered. The description adds that it queries named external authorities, which reinforces the open-world nature, but says nothing about rate limits, caching, failure modes, or how results from multiple authorities are merged.

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 verb first and no filler. The authority list is long but each entry maps to a real source enum value, so it earns its place 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, return values need not be explained, and all five parameters are schema-documented. What remains thin is the decision guidance for choosing between this tool and the other lookup_* siblings, which is the only substantive gap for a five-parameter, nested-object 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 enum values for 'source' and the command-style syntax for 'query' are already documented in the schema; the description's list of authorities largely restates the enum. No additional meaning is added for 'limit' or the nested _subject/_files objects, 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 opens with a specific verb ('Resolve') and a concrete resource set (ontology term, pathway, cell type, antibody RRID), then enumerates the eight authorities it covers. That scope makes it distinguishable from sibling lookups such as lookup_gene, lookup_protein, or lookup_compound, though it never names those siblings explicitly to draw 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 only implied: by listing OLS, QuickGO, Reactome, KEGG, Rfam, CellGuide/PanglaoDB and Antibody Registry, an agent can infer when this tool applies, but there is no explicit when-to-use/when-not statement and no named alternative for adjacent tasks (e.g. gene or protein lookup).

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_temperatureA
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.

ParametersJSON Schema
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

ParametersJSON 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

A3.7/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. The description adds useful behavioral context: it computes under published models, handles LNA markers without counting them as bases, applies salt correction and additives in sequence, and returns a per-step breakdown rather than a bare number. It does not discuss rate limits or constraints, but 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.

Conciseness3/5

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

The core purpose is front-loaded, but the description is a dense wall of text that duplicates many model and method names already in the schema. Every sentence is not strictly earning its place; the long citation list and repeated parameter enumerations 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?

With an output schema covering return values, full schema description coverage, and annotations covering safety, the description supplies all remaining context an agent needs: model options, LNA notation, buffer conditions fallback, and the returned breakdown. 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 schema already documents every parameter, including model enums, LNA notation, salt details, and additive methods. The description adds little parameter-level meaning beyond what the schema states, though it reinforces the model application order and LNA 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?

States a specific verb+resource ('melting temperature of an oligo in a buffer under a model') and adds scope ('the working, not just the number'). However, it never names or distinguishes itself from close siblings like melt_profile or analyze_melt_curves, so an agent must infer which one to use.

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 implied context that this is the computation behind the Melting Temperature panel and useful for pipelines needing coefficient breakdown, but gives no explicit when-to-use, when-not-to-use, or alternative tool guidance.

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

melt_profileB
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.

ParametersJSON Schema
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

ParametersJSON 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

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 the algorithmic basis (Poland–Scheraga / DECIPHER) and the shape of the computed result, but says nothing about cost of the temperature grid, runtime, or limits — modest added value against a low annotation bar.

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 tightly packed sentence that front-loads the resource and method before enumerating outputs. Dense nominal phrasing ('the cooperatively-melting domains behind each HRM peak') but no wasted 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?

An output schema exists, so return values need not be explained, yet the description still summarises them usefully; parameters are fully documented in the schema. What remains missing is operational context — when this is preferred over the related melting/HRM siblings — so it falls 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%, with ions, step, min_temp, max_temp, region_start/end and the _subject/_files selectors each documented inline. The description adds no parameter meaning at all, so the baseline 3 for fully-covered schemas 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 and resource: DNA melting behaviour computed by the Poland–Scheraga model (DECIPHER), returning a melt curve, Tm50, and cooperatively-melting domains per HRM peak. That output signature implicitly separates it from the sibling melting_temperature (single Tm) and analyze_melt_curves, though it never names an alternative outright.

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 guidance is given, and no sibling is named or excluded. An agent cannot tell from the text whether melt_profile supersedes melting_temperature, feeds analyze_melt_curves, or is the right call for a plain Tm query.

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.

ParametersJSON Schema
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

ParametersJSON 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).

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
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.8/5.0
Behavior4/5

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

Annotations already indicate this is not read-only and not destructive. The description adds meaningful context beyond that: it emits the optimized sequence as a NEW record for downstream nodes, which is a concrete behavioral outcome. It does not discuss computational cost, determinism controls, or permissions, but with annotations present this is a solid addition.

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, front-loaded with the core action and followed by the output behavior. Every phrase carries information and 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 complex optimization tool with a full input schema, annotations, and an output schema, the description covers the essential purpose and output shape. It is complete enough for invocation, though it lacks guidance on selection relative to sibling optimization 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 all 7 parameters are already documented in detail. The description only mentions constraints and objectives with a few examples that overlap with the schema's own enumerations; it adds no extra meaning for seed, candidates, randomization_threshold, or _files. 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: 'Run the DnaChisel optimizer over the subject with real constraints/objectives.' It also names the output ('optimized sequence as a NEW record'), so the agent can distinguish it from generic sequence tools. However, it does not explicitly differentiate itself from sibling tools like codon_optimality or design_expression_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 phrase 'with real constraints/objectives' implies the tool is for constrained sequence optimization, but there is no explicit when-to-use guidance, prerequisites, or named alternatives. The context is inferable from the examples (GC window, pattern avoidance, translation enforcement) but the agent is not told when to choose this over other design or codon 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.

ParametersJSON Schema
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

ParametersJSON 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 readOnlyHint=false, destructiveHint=false and openWorldHint=false. The description adds meaningful context beyond that: the operation emits the first product as a NEW sequence record rather than mutating the template, which clarifies state effects and the downstream hand-off. It could say more about failure/no-product behavior, but with annotations and an output schema the bar is lower.

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 most decision-relevant fact (a new record is produced for downstream tools). 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 14-parameter tool with full schema coverage and an output schema, the description covers the essential behavioral nuance — that downstream tools act on the amplicon, not the template. It omits the nested-PCR round-2 behavior, but the schema documents that, so little agent-critical information 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 rich per-parameter docs (nested PCR, DMSO model, mismatch budget, etc.), so the baseline is 3. The description only gestures at the forward/reverse primers and adds no syntax or semantics beyond the schema, though the schema itself already carries the 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 (Amplify) and resource (subject template with a forward + reverse primer) and names the underlying method (pydna Anneal). It does not explicitly distinguish itself from close siblings like multiplex_pcr or fusion_pcr, but the output semantics it stresses (amplicon, not template) give an agent a clear mental model.

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 when to use it — as the amplification step whose amplicon feeds digest/gel/map — but it never states when to prefer it over multiplex_pcr, fusion_pcr, or a primer-design tool. Usage is inferable rather than explicit.

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.

ParametersJSON Schema
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

ParametersJSON 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 cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower, and the description still adds useful context: results are 'validated against pyteomics', ion type applies only to plain sequences, and ProForma input is monoisotopic-only. It does not mention limits, cost, or failure modes, but that is minor 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.

Conciseness4/5

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

Two sentences, front-loaded with the primary output (mass and m/z), then the input-form rules. Dense but every clause carries information; the example list is slightly over-packed but directly serves disambiguation of the sequence format.

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 covers both accepted input forms plus the ion-type constraint. The only real gap is routing guidance relative to sibling mass/ion tools, which is not strictly required 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 baseline is 3, but the description goes beyond it: it enumerates the ion series (b, y, c, z, a, x plus neutral-loss forms), explains the accepted modification syntaxes (signed mass, Unimod name, UNIMOD:accession) and gives concrete ProForma examples such as [TMT6plex]-PEPTM[Oxidation]IDE. It says nothing extra about the charges parameter, but the schema covers that.

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 (monoisotopic/average mass and m/z per charge state) on a specific resource (peptide), and names the validation basis (pyteomics). It is clear what the tool does, but it never distinguishes itself from nearby siblings such as fragment_ions, isotope_envelope, isotopic_composition, or protein_properties.

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 differentiates the two input regimes (plain one-letter sequences take an ion type; ProForma peptidoforms are weighed monoisotopically with modifications), which helps an agent pick the right input form. However, there is no explicit when-to-use guidance, no statement of when another tool is preferable, and no prerequisite notes.

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.

ParametersJSON Schema
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

ParametersJSON 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_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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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.
normalisation_ratioNow, the ratio of the two groups' normalisation factors. Only applies when method is exact. Advanced.

Output Schema

ParametersJSON 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.4/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 safety is covered. The description adds useful computational behavior: exact negative-binomial test versus average power, per-gene behavior with pilot counts and dispersions, and the absence of a normal approximation. It does not discuss return format, 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?

The core question and method distinction are front-loaded, and there is no filler across the four sentences. However, the first sentence is extremely dense with citations and parentheticals, which makes it slower to parse than 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?

The tool has an output schema and full annotation coverage, and all 21 parameters are documented in the input schema. The description supplies the purpose, model choices, solve_for semantics, and sibling routing needed 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%, and the schema itself already documents method, solve_for, counts, dispersions, and the various statistical parameters. The description reinforces the meaning of solve_for and the pilot counts/dispersions use case, but mostly restates schema-level semantics rather than adding syntax or constraints 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 planning question: how many biological replicates an RNA-seq experiment needs when the question is about the whole experiment rather than one gene. It distinguishes the exact negative-binomial test from average power across genes and contrasts itself with the sibling 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?

Explicitly names calculate_rnaseq_power as the alternative and gives the condition that selects this tool: no normal approximation, so use at small n or low counts. It also explains that solve_for n sizes the experiment while power scores an existing design.

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.

ParametersJSON Schema
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

ParametersJSON 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.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 adds genuine behavioral context beyond that: provenance rules (datasheet vs pydna-faithful Taq/Q5 preset, and that the result says which is which) and the content of the check (percentage of vendor maximum, extension time, substitutions per molecule, error-free fraction, each finding quoting a spec line).

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 before the sourcing/check detail, with no filler. It is dense and slightly long, but every clause carries information (provenance, fallback presets, check outputs).

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 and complete annotations, the description needn't explain return values, and it still spells out what the check reports and where each number originates. It stops short of describing failure modes or the interaction between the required amplicon_bp/gc_percent inputs and the vendor windows, but nothing essential to calling 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 the schema already documents all 12 parameters, including enum value explanations and the _subject/_files shapes. The description reinforces the semantics of anneal_c and the enzyme datasheet sourcing but adds no parameter-level detail the schema lacks; 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 ('Plan the cycling programme for an amplicon on a NAMED enzyme') and a second function ('check the reaction against that manufacturer's own published limits'). This is clearly distinguishable from siblings like pcr_amplify (which produces the amplicon) and melting_temperature (which computes 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?

It situates the tool in a workflow by telling the agent where its inputs come from — the annealing temperature is 'yours (from design_primers or pcr_amplify)' and is explicitly 'not a guess this tool makes'. That is clear context for when to call it, but it names no exclusions or alternate tools for the same job.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnly/non-destructive, so the bar is lower, and the description adds genuinely non-obvious behavior: the scan is 3'-anchored, every reported site matches the 3' seed exactly, and 'no sites' means no seed match rather than a low score. It also notes the effective cutoffs are echoed back in `thresholds`. It does not cover failure modes or input-validation behavior, 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?

Two sentences, purpose front-loaded, with the essential 3'-anchored caveat second; no filler or restatement of the tool name. The first sentence is dense with symbols and grading vocabulary, which slightly slows parsing 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, return values need not be spelled out, and the description still explains scope, verdict grading, and empty-result semantics. The one gap is that it says 'the open plasmid' while the schema also accepts arbitrary `_subject`/`_files` records, leaving the target-selection rule slightly ambiguous.

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 3 is the baseline and the schema already explains each threshold symbol and the 99.999 exact-cut rationale. The description still adds value by framing thresholds as a movable bar tied to intent ('move it to say what you are asking', pool-screening vs clone-checking) and reiterating that the bar used is returned.

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+resource: it maps where a primer anneals on the open plasmid, reporting 3'-anchored sites with identity % and a graded verdict. The 'on the open plasmid' scope and the 3'-anchored seed semantics separate it from sibling tools like check_primer_specificity and find_primer_snps, so an agent can route correctly 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 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 locating primer binding sites on a plasmid, and the threshold-taste note ('screening a pool tolerates a lower strong than checking a clone') is real but parameter-level guidance. No explicit when-to-use-vs-alternative or exclusion (e.g., when to prefer check_primer_specificity over this) is given.

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.

ParametersJSON Schema
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

ParametersJSON 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
propagatedMeanYesthe expression evaluated at the input means, with the second-order correction when it is on

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover read-only/non-destructive/closed-world safety, so the bar is lower; the description adds real behavioral context beyond that: it computes three arms concurrently, the Taylor arm is exact only for linear expressions, and it reports per-variable derivatives plus variance contributions. It does not discuss cost, runtime, or rate limits, but for a read-only computation this 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.

Conciseness4/5

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

The core concept is front-loaded in the first clause and every sentence carries information. Some sentences are dense and wind (the 'they disagree in informative ways' clause is a long aside), but nothing is pure filler and the ordering is logical.

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 nested objects, a full output schema, and complete annotations, the description supplies the remaining conceptual context: what the three methods are, how to choose input mode and distribution, and what the answer means ('which measurement should I make more precisely'). An agent can act correctly from description plus 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 schema already documents each field; still, the description adds meaning by framing the stat-vs-raw distinction as a strength tradeoff, illustrating R expression syntax, and explaining that a ratio's nonlinearity motivates second_order. This goes beyond restating the schema, though it does not walk through 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?

The opening states a specific verb and resource: propagate uncertainty for any qPCR quantity via three named methods (Taylor, Monte-Carlo, permutation). The added 'Reproduces qpcR 1.4.2's propagate' anchors it to a knowable reference, distinguishing it from siblings like relative_expression or bootstrap_cq 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?

It clearly frames the input (the expression you actually report plus means/SDs or raw replicates) and explains why the three arms are surfaced together ('they disagree in informative ways'). It also motivates mode choices (raw is the stronger input; second_order is what makes a ratio usable). It stops short of naming sibling tools or 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.

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).

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
Behavior4/5

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

Annotations already establish readOnlyHint, destructiveHint=false, and openWorldHint=false, so safety behavior is covered. The description adds useful context beyond that: local execution, the LSTM/consensus methodology, output scoring per residue, IDR/folded-domain caller behavior, and threshold usage.

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 dense sentences: method and scope first, reported outputs second, sibling differentiation last. No filler, and the most important routing information is front-loaded.

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, 9-parameter tool with an output schema and rich annotations, the description supplies the high-level purpose, method, outputs, and sibling distinction. The schema and output schema carry parameter and return details, so nothing essential is missing for correct tool selection or 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%, and every parameter is already documented in the schema. The description mentions the network threshold conceptually but does not add meaning for specific parameters such as version, gapClosure, minimumIdrSize, or minimumFoldedDomain, 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 computation (per-residue intrinsic disorder by metapredict) and names the underlying method, model class, and outputs. It also explicitly distinguishes itself from the sibling protein_disorder, 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 Guidelines4/5

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

Names the alternative protein_disorder/FoldIndex and clarifies that it answers a different question based on composition alone. This gives clear selection context, though it stops short of explicit when-to-use/when-not phrasing.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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).

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
mwYesmolecular weight [Da]
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
bomanYesBoman potential protein-interaction index [kcal/mol] (>2.48 = protein-binding)
gravyYesgrand average of hydropathicity over `gravyScale`
helixYesfraction of residues favouring an alpha-helix
sheetYesfraction of residues favouring a beta-sheet
chargeYesnet charge at `pH`
formulaYesmolecular formula, ProtParam style (e.g. C1755H2634N466O557S5)
elementsYesatom counts per element (C, H, N, O, S) behind the 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)
momentHelixYesmax Eisenberg hydrophobic moment at the α-helix periodicity (100°)
momentSheetYesmax Eisenberg hydrophobic moment at the β-sheet periodicity (160°)
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
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 fully covered. The description adds the implementation libraries (Biopython ProtParam, peptides, pyteomics), but does not disclose compute cost, handling of invalid sequences, or any other behavioral trait beyond what the annotations and 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?

A single sentence front-loads the main computed property and remains dense but compact. The parenthetical implementation list is slightly expendable, but there is no wasted framing 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?

Given the rich schema, output schema, and annotations, the description supplies the essential purpose and output scope. It does not address sibling routing or nested _subject/_files usage, but those are covered by the schema, so the agent has enough 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%, including detailed enum documentation for gravyScale and cystineConvention. The description adds no parameter-level meaning beyond what the schema already states, 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 resource (a protein sequence) and enumerates the specific computed properties: molecular weight, formula, isoelectric point, instability index, and amphipathicity metrics. This is far more concrete than a tautology, but it is a noun phrase without an action verb and does not explicitly differentiate from siblings like peptide_mass or protein_profile.

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 use this tool versus alternatives, no exclusions, and no prerequisites. The agent must infer its role from the property list alone.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
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.1/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive, so the bar is lower, but the description adds real behavioral content: dMIQE-2020 occupancy QC is returned beside every reading and degenerate wells (no positives, >95% saturation) are reported as such rather than as a number. It also notes that leaving ratio_target/ratio_reference unset suppresses copy number rather than guessing.

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 purpose and derivation, then edge-case reporting. Dense but nearly every clause adds information; a couple of clauses are long but none are 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 15-parameter tool with an output schema, the description covers the computation, the eleven CI methods, edge-case reporting, and the required QC standard. Since the output schema exists, return values need not be detailed, and what remains absent (platform-specific partition volumes) is already covered in the parameter schema text.

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 conceptual linkage: positives/partitions, partition volume, and dilution chain all feed one lambda, and the CI is carried on the lambda scale under the chosen binomial method. That ties several parameters into a single model rather than merely 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+resource (dPCR partition counts to absolute concentration) and pins down the mechanism: lambda = -ln(1 - k/n), partition volume, dilution chain. It is clearly distinguishable from the standard-curve qPCR siblings (call_cq, bootstrap_cq, simulate_taqman_curve) via 'with no standard curve'.

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 'no standard curve' framing implies this is the absolute-quantification path rather than the standard-curve qPCR path, but no sibling is named and no when-not condition is stated. It also lacks prerequisites (what a valid well table must contain) beyond what the wells schema implies.

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.

ParametersJSON Schema
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), 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).

Output Schema

ParametersJSON 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, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: it discloses provenance semantics (the connector returns only what the authority published, no computation) and the precedence rule that an authoritative registry outranks local data — useful for reasoning about result trustworthiness.

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 the authority examples. The second sentence is slightly editorial ('the rule that an authoritative registry outranks anything kept locally') but it earns its place by conveying the data-provenance boundary.

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 authority enum enumerates all ~60 sources. For a read-only gateway the description covers the conceptual model adequately, though it says nothing about the project-record (_subject/_files) plumbing or rate-limit behavior across external authorities.

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 authority, query, limit and the nested _subject/_files parameters are all documented in the schema, including the command form example (`ensembl_lookup:BRCA2`). The description adds no parameter-level detail 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.

Purpose4/5

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

States a concrete verb and resource ('ask one of the ~60 authoritative databases a question and hand its rows downstream') and names example authorities, so the agent knows this is a connector/gateway rather than a compute tool. It does not, however, distinguish itself from the many sibling lookup_* tools (lookup_gene, lookup_protein, lookup_variant, search_literature), which cover overlapping territory.

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?

'Nothing here computes science' functions as a when-not boundary, steering the agent away for any analysis task, and 'hand its rows downstream' implies the fetch-then-process pattern. But there is no explicit routing versus alternatives like lookup_gene, fetch_record, or search_literature, leaving the choice to inference.

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

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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 maximise or minimise. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNothe column naming each candidate. Left unset, the first column.
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 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.normalised
maximiseNothe columns where higher is better, separated by commas.
minimiseNothe columns where lower is better, separated by commas.
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

ParametersJSON Schema
NameRequiredDescription
frontYesthe non-dominated candidates (front 1), most isolated first
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

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, non-open-world operation, and the description adds substantial beyond them: the return shape (front number, the one-front-up dominator, crowding distance), filter-then-rank ordering, and the notable rule that rows with an empty objective are dropped and counted rather than ranked last. It even cites the source algorithms (moocore, emoa, pymoo) whose behavior is reproduced.

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 every sentence carries information about behavior or options. Dense colon-and-dash clause stacking makes the first sentence slower to parse than ideal, but 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 exists and annotations cover safety, the description still supplies the behavioral details an agent needs: pre-filter syntax, handling of empty objectives, duplicate handling, crowding modes, and the ranking output columns. Nothing material 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 schema already documents label, table, filter, maximise/minimise, crowding, and keep_duplicates in detail, including the same filter syntax example the description repeats. The description adds a little meaning (why crowding distance matters for spreading a short list) but does not compensate beyond the schema's 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+resource ('Pareto (non-dominated) sorting of rows scored on several columns, each to maximise or minimise') and frames the exact question the tool answers. The multi-objective ranking domain is distinctive enough to separate it from generic siblings like rank_strategies or summarize_rows 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?

The opening clause ('Which candidates ... are not beaten on every objective at once') gives clear context for when this tool applies, and the filter example shows the pre-filtering step. No explicit exclusions or named alternative tools are given, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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
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

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint=false, so safety is covered; the description adds domain behavior beyond that — it discloses exactly what is computed for a coverage table (longest stretch below the line, largest change in level, both located) and, importantly, that no 'large' threshold is invented. It also ties the two shape signatures (gap, sudden increase) to their biological meanings.

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 in the first clause, but the prose is dense, em-dash-heavy, and restates the same idea twice (the shape measurements 'are both measured and located' and again 'reported and the call is the reader's'). Several sentences carry interpretive flavor that could be trimmed without losing call-relevant 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?

An output schema exists, so return values need not be explained, and annotations cover the read-only profile. The description supplies interpretation guidance for a tool whose complexity (two report formats, shape detection, coverage thresholds) warrants it. It is adequate, though the prose spends more on rationale than on operational edges (e.g. malformed/undetected kind).

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 earns above baseline by giving the rationale behind coverage_line ('the provider's own published line and nothing of ours; raise it for a construct you intend to publish') and step_window (median over a window so 'one spike is not a step'), mapping the parameters to the domain reasoning rather than restating types.

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: reads QC files (per-base coverage table or Plasmidsaurus summary) that a sequencing provider returns alongside reads. The two report kinds are named, so the agent knows the tool's scope. It never explicitly differentiates itself from nearby siblings such as verify_read or recompute_trace_quality, so no sibling-routing credit.

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 framing ('whether a disappointing read is the clone's fault or the run's') tells the agent this is for diagnosing a poor sequencing result, which is real context. But there is no explicit when-to-use/when-not and no named alternative, 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.1/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 substantive behavioral detail beyond them: it never writes a structure file, never applies symmetry, and every count reflects what the file actually holds, with core CIF counts limited to the asymmetric unit. This is exactly the kind of limitation disclosure that helps an agent predict 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?

The description is front-loaded with purpose and use cases, and the output-content list, while long, is relevant and earns its place. It is slightly encyclopedic but not padded or 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?

Given the presence of an output schema, full annotations, and 100% schema description coverage, the description is complete for correct invocation: it covers purpose, usage context, and important behavioral limitations. Return-value details are appropriately 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 the text, model, _files, and _subject parameters in detail. The description contextualizes file formats but does not add parameter-level meaning beyond the 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.

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 a structure file — PDB, PDBx/mmCIF, or a core CIF...' and then enumerates what it reports. This is clear and concrete, but it does not explicitly distinguish itself from siblings such as read_structure_consensus, 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 Guidelines4/5

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

The description gives clear when-to-use guidance: 'Use it to answer what a structure IS before deciding what to do with it, or to pull a chain's sequence out...' This covers common contexts, but it does not state when not to use the tool or name alternative tools explicitly.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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).

ParametersJSON Schema
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

ParametersJSON 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 declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safe, local, non-mutating profile is covered. The description adds genuine context beyond that and the schema by disclosing the derivation sources (Biopython mass model; ProtParam for a protein subject) and tying outputs to the editor's Properties/inspector panels, though it says nothing about error or edge-case 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?

Two information-dense sentences with the computation front-loaded and no filler; it earns most of its length. It is slightly heavy with enumerations and parenthetical provenance, but nothing is 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?

An output schema exists, so return values need no prose, and the schema fully documents parameters. Given the nested _subject object and the specific computation, the description supplies enough to call correctly; only explicit 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% and the nested _subject and doubleStranded parameters are fully documented in the schema, so the baseline is 3. The description adds only indirect meaning, linking 'topology and strand count' and 'resolved bases' to the computation without new syntax or format detail beyond the schema's own doubleStranded explanation.

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 computation and enumerates its outputs precisely (molecular weight under topology/strand count, GC and AT over resolved bases, per-symbol census with ambiguity codes). It also names the sibling it shadows (protein_properties) and its counterpart role, so an agent can tell what this computes 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?

Framing it as 'the nucleic-acid counterpart of protein_properties' implies the protein-subject alternative, but it never states an explicit when/when-not, nor how it differs from nearby siblings like gc_content or melting_temperature. Usage is only inferable from the described outputs.

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.

ParametersJSON Schema
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

ParametersJSON 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

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the write/not-destructive/not-open-world profile, so the bar is lower, and the description still adds non-obvious behavior: every entry carries the `automated` tag, `@plasmid`/`!action`/`&gel` references are extracted into cross-reference lists as you write, and appends cross-link exactly like hand-typed entries. It omits the append-renews-title hazard (left to the schema) and says nothing about error or auth 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 core action is front-loaded in the first sentence and each clause carries information rather than filler. It is slightly padded with persuasive framing ('so you can always tell which is which', 'instead of a reminder to write one') that could be trimmed without loss.

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 write semantics, the automated tag, and cross-linking well; the remaining gap is that it never surfaces the rename-on-append behavior, which lives only in the title field description.

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 seven parameters and the baseline is 3. The description restates the markdown reference-extraction semantics of body_md but adds no syntax or format detail beyond what the field description already provides for entry_id, collection, tags, or title.

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 — write/append a lab notebook entry — and clearly splits the two operating modes ('a new entry, or more text appended to one you name'). It does not explicitly contrast itself with siblings like list_experiments or notebook_cross_refs, so an agent must infer the boundary rather than being told 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?

One genuine when-to-use is given: 'Use it to end a pipeline with a record of itself instead of a reminder to write one.' That is real guidance about intent, but there is no explicit when-not, no named alternative tool, and no stated prerequisite (e.g. that entry_id must come from list_experiments). Usage is implied more than specified.

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.

ParametersJSON Schema
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

ParametersJSON 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
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.1/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 bar is lower. The description adds real context beyond them: the separate-tube/same-tube estimators 'differ in WHEN the subtraction happens and are not a display option,' the significance test runs beside the model, and the equal-efficiency assumption can be checked in the same run — clarifying behavior and assumptions the annotations don't.

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 one dense paragraph of three long sentences, but the purpose and model list are front-loaded and each sentence carries substantive information about models, estimators, and tests. Verbose yet justified for a 20-parameter tool covering three models and five tests.

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 full annotations, the description covers the model choices, the statistical tests, the estimator nuance, and the efficiency check. Return values are handled by the output schema, so the remaining gaps are minor.

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 20 parameters, including enum values and the 'Advanced' flags. The description restates model and test semantics but adds little that isn't already in 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 — computing relative gene expression from a Ct table — and enumerates the three models (delta-delta-Ct, delta-Ct, standard curve), naming the `pcr` package functions it reproduces. An agent can tell this apart from sibling tools like `differential_expression` or `call_cq` 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 model-selection conditions: delta_delta_ct and relative_curve need a reference gene while delta_ct does not, relative_curve additionally needs standard_ct_table and amounts, and the significance test runs 'on request.' However, it never states when to prefer this tool over the sibling `differential_expression` or 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.

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.

ParametersJSON Schema
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

ParametersJSON 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 cancelled, and what resuming would do. Given the corpus, also reports every pinned input whose content changed under the same name, which a resume refuses.

ParametersJSON Schema
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

ParametersJSON 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.3/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, yet the description adds substantial behavior beyond them: seal enforcement (edited or truncated files are refused), the exact resume-eligibility rule (no evidence and last attempt failed or deferred by a call's budget), and the pinned-input content-drift check that blocks resumption. This is genuinely useful operational context a caller could not derive 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?

The read-only, non-executing framing is front-loaded, and every clause carries distinct information (seal, verdicts, resume set, settled/cancelled, drift). It is a long single sentence with heavy parenthetical nesting, which slightly hurts scanability, but there is little outright 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 not be spelled out, and the description still enumerates the categories of information returned. For a 4-parameter nested-object tool with a rich schema, the description covers purpose, safety, and refusal conditions adequately; 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 four parameters including the run file's origin and the sequences corpus. The description echoes the sequences/pinned-input relationship but adds no syntax, format, or edge-case detail 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?

States a specific verb and resource ('Read a research run file') plus a sharp scope qualifier ('without running anything') that immediately separates it from run_discovery_programme and resume_research_run. The enumerations of what it reports (seal status, verdicts, merge rules, resume eligibility, pinned-input drift) 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 Guidelines4/5

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

'Without running anything' plus repeated framing around what 'a resume would run' and 'what resuming would do' makes the inspection-vs-execution context clear. However, it never names resume_research_run or run_discovery_programme explicitly as the alternatives an agent should pick when it does want to execute, so routing is inferred rather than stated.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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 cancelled 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.

ParametersJSON Schema
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 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runYesthe 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
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.4/5.0
Behavior5/5

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

Annotations cover the safety profile (read-only, closed-world, non-destructive), and the description adds substantial behavior far beyond them: the seal check, pinned-input content validation with changed files refused by name, the exact selection rule for which hypotheses run, the guarantee that answered/settled/cancelled hypotheses never re-run, and the budget-slicing loop. This is unusually rich disclosure for a resumption 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?

Three sentences, front-loaded with the core action and condition before descending into validation and scheduling detail. It is dense and clause-heavy, but essentially every clause carries a distinct behavioral fact, so little could be cut without losing 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?

For a high-complexity, nested-object tool with five parameters, the description covers trigger, validation constraints, execution selection rules, continuation protocol and output equivalence. An output schema exists, so the brief return-value note is a bonus cross-reference rather than a necessity.

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, sequences, _files, _subject and budget_seconds in detail. The description adds only the slicing-loop semantics for budget_seconds ('call again with the returned file until nothing is pending'), which is useful but marginal against a fully documented schema — 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 first clause gives a specific verb and resource — 'Continue a research run from its file' — plus the triggering condition (interruption or failed test). It is clearly distinguishable from siblings like cancel_research_run, research_run_status and run_discovery_programme, the last of which it explicitly anchors itself to by output equivalence.

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 when to use it: after an interruption or a failed test, and repeatedly with the returned file when budget_seconds is set. The resume-only framing implicitly excludes starting a fresh run, but it never names run_discovery_programme as the alternative for that case, so the routing guidance is clear but not exhaustive.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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 programme 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) 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 the Hypothesis Ledger, 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 programme 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.

ParametersJSON Schema
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). 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 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.
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

ParametersJSON Schema
NameRequiredDescription
runYesthe 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
ledgerYesthe whole ledger as a jane.discovery-ledger file, every hypothesis and its evidence with traces
reportYesthe programme 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.2/5.0
Behavior5/5

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

Without relying on annotations, it discloses substantial behavior beyond what readOnlyHint/destructiveHint convey: pre-registration before any test runs, e-values that refuse reused evidence, e-BH deciding over all hypotheses, SHA-256 pinning, budget-deferred tests, per-source averaging rather than multiplication, and exactly what is returned (verdicts, ledger file, refusals, literature queries). This is exceptional behavioral depth.

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?

It is front-loaded with the purpose and the run-file/ledger continuation semantics, but the body is one enormous run-on paragraph that mixes the test registry, statistical machinery, return values, and continuation into a single block. It is information-dense and mostly earns its place given the complexity, yet structure and parseability suffer.

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 orchestration tool with nested objects and a rich return set, the description covers inputs, per-test parameter mapping, continuation, deferral, and what the output contains. With an output schema present, it need not explain every return field, and nothing essential for correct invocation 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 already 100%, so the schema baseline is 3. The description additionally explains the role of `run`, `ledger`, `alpha` (e-BH level), `kappa` (calibrator, fixed once evidence exists), `budget_seconds` (whole tests, never cut short), and maps per-test hypothesis params in detail, adding real meaning on top of 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 verb and resource ('Run a discovery programme end to end under pre-registration') and enumerates the exact hypothesis tests it orchestrates, which clearly positions it above the individual discover_* siblings. It is unambiguous what the tool does, though the density of the wall-of-text dilutes first-glance clarity.

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 paths: pass `ledger` with posterior beliefs for follow-up ordering, pass a previous `run` file to add hypotheses and retry failed tests, and route to research_run_status/resume_research_run. It does not explicitly say 'use this instead of calling discover_site_avoidance directly', so the alternative-selection guidance is implied rather than stated.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.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, openWorldHint=false, so the safety profile is covered. The description adds real context by explaining what the returned number means (the NEB Ligase Fidelity Viewer metric) and that scoring is against measured T4 ligase data, though it doesn't discuss cost beyond what the schema's remedies param already notes.

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 sentences, each earning its place: purpose/metric definition, the sibling contrast, and the wiring instruction. Front-loaded with the core action and 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 an output schema present, return values need not be explained, and the description covers purpose, the sibling alternative, and how to feed the overhangs parameter. 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 all seven parameters. The description's wiring hint for overhangs largely repeats the schema's own note ('Wire golden_gate_assemble.overhangs here'), so it adds little beyond structured data. 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 (a Golden Gate junction/fusion-site overhang set) and defines the metric precisely as the expected fraction of assemblies in which every junction ligated correctly. It explicitly distinguishes itself from the sibling check_golden_gate_parts, so an agent can tell them 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 Guidelines5/5

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

Names the alternative (check_golden_gate_parts) and the exact condition that selects between them ('whether the parts will be cut' vs 'whether the pieces go back together in the right order'). It also gives a concrete integration instruction: wire golden_gate_assemble's overhangs output straight into it.

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.

ParametersJSON Schema
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

ParametersJSON 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!).

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.2/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 safety needs no restating. The description adds real behavioral content: matches are graded Strong/Moderate/Weak, short 'suspect origin' stretches are reported for removal, and both the N-masked sequence and the longest clean region are emitted. It omits the refusal semantics (out-of-order ladders, protein refusal) which live only in schema text.

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 filler, and the scope/naming clause is front-loaded before the output behavior. Dense but readable; the second sentence is long but each clause (grading, suspect origin, masked output, clean region) 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 a 23-parameter, nested-schema tool with an output schema and annotations already present, the description supplies everything an agent needs: what is searched, against what, how results are graded, and what artifacts come back. Remaining details are fully covered by the 100%-covered schema and 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% across all 23 parameters, so the schema already carries the semantics and the baseline is 3. The description's only added framing is that the tunables are 'VecScreen's own BLASTn parameters and category rules', which the per-parameter notes already spell out for each 'Advanced' setting.

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 (screen a nucleotide sequence for vector/adapter/linker/primer contamination) and pins the reference (NCBI UniVec with VecScreen's own BLASTn parameters and category rules). This is clearly separable from siblings like mask_sequence, check_primer_specificity or blast_search.

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 explicit: it is the VecScreen-equivalent screen, and the emitted N-masked sequence plus longest clean region are framed for downstream gating ('a pipeline can gate on the result or carry the clean part onward'). However, no sibling is named and no when-not condition is given, so it stops short of the 5-level 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.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 genuine behavioral context beyond that: it identifies the underlying engine (primer3 thal), reinforces that the operation is non-mutating (folding/checking), and explains that only paired 3' ends extend, which governs how results should be read.

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 enumeration of computed measures; each subsequent sentence earns its place by explaining significance or scope. Slightly long, and the 'same engine the Tm columns elsewhere use' clause is ancillary, but 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?

With an output schema present, return values needn't be described, and the annotations plus 100% schema coverage carry the safety and parameter burden. The description supplies the analytic model and the pre-ordering use case, leaving it adequately complete for a 10-parameter tool, though it does not distinguish itself from adjacent screening 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 all ten parameters, including the effect of dna_conc on dimer vs hairpin Tm and the temperature/dntp interactions. The description adds conceptual framing of the 3'-end measures but no additional per-parameter semantics, 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 specific verbs (fold, check) and the resource (a set of oligos), then enumerates exactly which measures are computed: hairpin, self-dimer anywhere, self-dimer at 3', cross-dimer at any position and at 3'. It also anchors the tool to primer3's `thal`, so an agent knows the analytic method, not just the intent.

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 ('a pool can be screened before it is ordered rather than explained after a gel') and explains the 3'-end measures matter for a primer-dimer band because only a paired 3' end extends. It also states scope ('works on any oligo: primers, probes, ssODN donors, guides, adapters'). It never names a sibling such as primer_check or check_primer_specificity as the alternative, so routing against alternatives 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.

scrub_restriction_sitesBInspect

Propose the minimal SILENT synonymous edits that remove forbidden restriction sites from a CDS (a design/write).

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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_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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
qYesq-value per match, in input order
fdrYesFDR of the whole set
acceptedYestarget matches at or under the q-value threshold

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish it is a safe, read-only, closed-world computation. The description goes beyond them by disclosing the validation source (pyteomics), the supported statistical corrections (Levitsky et al. +1 and finite-sample), and what the result contains. Good added context without contradicting 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?

Two tight sentences, front-loaded with the core purpose before the return shape and correction details. No filler; every clause conveys distinct 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 9-parameter tool with an output schema, the description covers purpose, inputs, outputs, and the statistical options. Since an output schema exists, the return-value sentence is somewhat redundant, but 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%, so parameters are already documented in the schema; baseline is 3. The description echoes the score/isDecoy inputs and threshold notion but adds no syntax or semantics beyond the schema's own param 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+resource: computes false discovery rate and q-values for peptide-spectrum matches via target-decoy competition. It is clearly distinguishable from siblings like score_spectrum or infer_proteins, and cites a concrete implementation reference (pyteomics).

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 calling context (you have per-match scores and decoy flags) but never explicitly states when to use this tool versus alternatives, nor any prerequisites. 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.

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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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

ParametersJSON 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.

ParametersJSON Schema
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.

ParametersJSON Schema
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

ParametersJSON 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
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

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 goes beyond that by disclosing an unusual behavioral trait: uncountable things (unparsed genotypes, genotypes naming an undeclared allele) are reported rather than silently zeroed. That is a real semantic disclosure an agent would otherwise get wrong.

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

Conciseness4/5

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

Two sentences, no filler, and the identifying purpose is front-loaded before the edge-case behavior. The long enumeration of output fields is dense but each item is information-bearing; the only quibble is that the field list partly duplicates the output 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 read-only summary tool with an output schema and fully documented parameters, the description covers purpose, scope, output shape, and the non-obvious reporting behavior for uncountable data. An agent has everything needed to call it correctly.

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

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 already rich (e.g. pass_only explains the Ts/Tv measurement distinction, file explains the refuse-rather-than-guess behavior). The description adds no syntax, format, or default information beyond what the schema already 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?

A specific verb (summarize) applied to a specific resource (a variant call set), anchored to a well-known reference implementation (bcftools stats) and followed by an explicit enumeration of the statistics produced. This clearly separates it from read_variant_calls, population_site_stats, and score_variant_effect without the agent having 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 Guidelines3/5

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

Usage is implied by the enumerated output: an agent can infer this is the tool for aggregate QC-style statistics over a call set. However, no alternative is named and there is no when-not guidance or precondition statement, so the agent must infer the routing itself.

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.

ParametersJSON Schema
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

ParametersJSON 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

A4.1/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 real substance beyond them: it aligns the two inputs, reports every substitution/indel/uncalled position, maps each onto design features, and ranks by Ensembl's published consequence severity. It does not discuss coverage thresholds, failure modes, or performance limits, 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?

Two sentences, front-loaded with the core comparison and then the consequence-ranking payoff. The second sentence is long and clause-heavy, but every clause 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?

With 13 parameters, 100% schema coverage, and an output schema, the definition is nearly self-sufficient — the description explains the comparison logic and the consequence framing that the schema cannot. It leaves the tuning parameters entirely to the schema, which is acceptable given their documented coverage, but a note on when to touch them would round it out.

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; every alignment parameter (match, gap_open, word_size, min_coverage, etc.) is already documented in the schema. The description reinforces the semantics of the two required inputs ('the construct you INTENDED' vs 'what actually came back from sequencing') but adds no format or usage 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?

States a specific verb and two named resources ('Compare a sequencing RESULT against the construct you designed') and describes the output semantics (substitutions, indels, uncalled positions mapped onto features and ranked by consequence severity). This distinguishes it from adjacent siblings like alignment_agreement, compare_reads_to_reference and verify_read, which the agent can rule out 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?

It gives a clear use context — a pipeline gating on 'nothing worse than synonymous' rather than a raw difference count — which tells the agent the intended workflow. It stops short of naming alternatives or explicit when-not conditions, so it is clear context without exclusions.

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

verify_readB
Read-only
Inspect

Grade a sequencing read against a reference (✓ verified / ⚠ near / ~ partial / ✗ divergent) from an alignment.

ParametersJSON Schema
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

ParametersJSON 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

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 the safety profile is fully covered. The description adds the four grade labels and notes the alignment input, but it does not explain threshold behavior or edge cases; those details live mainly in the schema. It adds modest context beyond annotations without contradicting them.

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 sentence with no wasted words, and it front-loads the verb, resource, and result taxonomy. Its brevity is appropriate for a tool whose parameters and return value are documented elsewhere.

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, annotations are present, and input-schema coverage is complete, so return values and parameter semantics do not need to be repeated. However, for a 12-parameter tool with nested objects and several sibling alignment/grading tools, the description omits usage context and alternatives, leaving a real but bounded contextual 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%, and all 12 parameters, including thresholds and the aligned read/reference rows, are documented directly in the schema. The description adds no parameter-level meaning beyond saying the input is an alignment, so the structured schema is doing 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 (grade), resource (a sequencing read), and comparison basis (against a reference from an alignment), plus the four output grades. It does not distinguish itself from the sibling compare_reads_to_reference or clarify when it is preferred over alignment_agreement, 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 gives no explicit when-to-use guidance, prerequisites, or alternatives. It only implies the operation acts on an alignment, leaving the agent to infer that it belongs after an alignment step and how it differs from sibling grading or comparison tools.

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.

ParametersJSON Schema
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

ParametersJSON 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. 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 Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI-assisted molecular biology experiment design with tools for qPCR primer design, cloning strategy optimization, TaqMan probe design, and multiplex compatibility analysis.
    6
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server offering verified bioinformatics tools for sequence utilities and statistics, backed by BioPython/scipy. Enables AI agents to perform accurate GC content, translation, ORF finding, motif scanning, and statistical tests through natural language.
    11
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Phylogenetic inference server driving IQ-TREE 2, always returning per-clade bootstrap support plus model selection, tree comparison, and alignment simulation, with detailed diagnostics like conflicting clades and model uncertainty.
    6
    68 PyPI
    GPL 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables the generation, mutation, and evolution of DNA and protein sequences using various evolutionary models and phylogenetic algorithms. It supports realistic next-generation sequencing read simulation and population-level evolutionary tracking for bioinformatics research and testing.
    6
    BSD 2-Clause "Simplified"
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources