# com.seqbench/workbench (remote · seqbench.com)

Hosted DNA/RNA/protein tools: primers, oligos, PCR, cloning, CRISPR, alignment, batch & pipelines.

- Trust score: 66/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `seqbench.com`: 66/100 (this document), [markdown](https://verifymcp.io/servers/com-seqbench-workbench/api-mcp.md), [page](https://verifymcp.io/servers/com-seqbench-workbench/api-mcp)

## Channel facts

- Endpoint: `https://seqbench.com/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 84 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 13933 tokens (~165/item across 84 items; 84 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 91% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-seqbench-workbench https://seqbench.com/api/mcp
```

### Codex

```toml
[mcp_servers.com-seqbench-workbench]
url = "https://seqbench.com/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-seqbench-workbench": {
      "type": "remote",
      "url": "https://seqbench.com/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-seqbench-workbench --url https://seqbench.com/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-seqbench-workbench:
    url: "https://seqbench.com/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-seqbench-workbench": {
      "type": "http",
      "url": "https://seqbench.com/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 65, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-29 (score 64, +1)

- [security] Tool “save_permalink” rewrote its description, which is the text the model reads
- [cosmetic] “restriction_sites” added an optional parameter “circular”

### 2026-07-28 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 62, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 62)

First indexed and scored.

## MCP tools (84)

### `reverse_complement` (~49 tokens)

Reverse Complement

Reverse, complement and reverse complement of a DNA or RNA sequence.

Input parameters:

- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `type` (string)

### `gc_content` (~41 tokens)

GC Content

GC content, AT content and per-base composition of a sequence.

Input parameters:

- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `translate` (~66 tokens)

Translate

Translate a nucleotide sequence to protein (single frame or all six frames; standard code).

Input parameters:

- `frame` (integer)
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `toStop` (boolean): Stop at the first stop codon.

### `find_orfs` (~79 tokens)

ORF Finder

Find open reading frames (ATG…stop) across all six frames.

Input parameters:

- `minAaLength` (integer): Minimum protein length (aa) to report.
- `requireStop` (boolean): Only report ORFs terminated by a stop codon.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `format_sequence` (~125 tokens)

Format Sequence

Clean, case-fold, DNA↔RNA convert, reverse and line-wrap a sequence.

Input parameters:

- `caseMode` (string)
- `convert` (string): DNA→RNA (T→U) or RNA→DNA (U→T).
- `reverse` (boolean): Reverse the sequence (no complement).
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `stripNonLetters` (boolean): Remove digits, spaces and gaps (keep letters only).
- `width` (integer): Line-wrap width; 0 = single line.

### `motif_finder` (~109 tokens)

Motif Finder

Find (overlapping) occurrences of an IUPAC motif on either strand, allowing mismatches.

Input parameters:

- `maxMismatches` (integer): Maximum allowed mismatches per match.
- `motif` (string, required): Query motif; IUPAC ambiguity codes (R Y S W K M B D H V N) allowed.
- `searchReverseStrand` (boolean): Also search the reverse strand.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `reverse_translate` (~74 tokens)

Reverse Translate

Back-translate a protein to DNA (most-frequent codon per organism, or degenerate IUPAC consensus).

Input parameters:

- `mode` (string)
- `organism` (string): Codon-usage host (ignored in degenerate mode).
- `protein` (string, required): Protein sequence (one-letter codes; * for stop).

### `random_sequence` (~68 tokens)

Random Sequence

Generate a random DNA, RNA or protein sequence, optionally with a target GC content.

Input parameters:

- `gcContent` (number): Target GC percentage 0..100 (dna/rna only); omit for uniform.
- `kind` (string)
- `length` (integer, required): Number of residues to generate.

### `melting_temperature` (~194 tokens)

Primer Tm calculator

Primer/oligo melting temperature: nearest-neighbour (SantaLucia 1998) plus Wallace and salt-adjusted estimates, with the length-appropriate recommendation and molecular weights.

Input parameters:

- `dntpMM` (number): Total [dNTP] (mM), chelates Mg2+.
- `mgMM` (number): Divalent cation [Mg2+] (mM).
- `naMM` (number): Monovalent cation [Na+]/[K+] (mM).
- `oligoNM` (number): Total strand concentration (nM).
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `targetTm` (number): Optional target Tm (°C). When given, the response includes a pass/fail gate.
- `tmTolerance` (number): Allowed +/- window (°C) around targetTm for the gate.

### `oligo_analysis` (~146 tokens)

Oligo analyzer

Full oligo analysis: nearest-neighbour Tm/ΔG/ΔH/ΔS plus hairpin and self-dimer screening with base-pair diagrams and warnings.

Input parameters:

- `dntpMM` (number): Total [dNTP] (mM), chelates Mg2+.
- `mgMM` (number): Divalent cation [Mg2+] (mM).
- `naMM` (number): Monovalent cation [Na+]/[K+] (mM).
- `oligoNM` (number): Total strand concentration (nM).
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `in_silico_pcr` (~129 tokens)

In-silico PCR

Predict PCR products for a template and a pair of primers (IUPAC-aware, allows mismatches, handles circular templates).

Input parameters:

- `circular` (boolean): Treat the template as circular (plasmid).
- `forwardPrimer` (string, required): Primer 1, 5'→3'.
- `maxMismatches` (integer): Mismatches tolerated per primer.
- `reversePrimer` (string, required): Primer 2, 5'→3' (order does not matter).
- `template` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `primer_design` (~302 tokens)

Primer designer

De-novo PCR primer design (Primer3-style penalty picker): enumerate and score candidate primer pairs against length/Tm/GC/3'-clamp/structure constraints.

Input parameters:

- `ampliconMax` (integer)
- `ampliconMin` (integer)
- `dntpMM` (number): Total [dNTP] (mM), chelates Mg2+.
- `gcMax` (number)
- `gcMin` (number)
- `lenMax` (integer)
- `lenMin` (integer)
- `lenOpt` (integer)
- `maxReturn` (integer): Number of best pairs to return.
- `mgMM` (number): Divalent cation [Mg2+] (mM).
- `naMM` (number): Monovalent cation [Na+]/[K+] (mM).
- `oligoNM` (number): Total strand concentration (nM).
- `targetEnd` (integer): 1-based inclusive end of the target region (optional).
- `targetStart` (integer): 1-based inclusive start of a region the product must span (optional).
- `template` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `tmMax` (number)
- `tmMaxDiff` (number): Max Tm difference within a pair (°C).
- `tmMin` (number)
- `tmOpt` (number)

### `dna_molarity` (~147 tokens)

DNA molarity calculator

Nucleic-acid quantity conversions: molar mass, amount (pmol/nmol), molar and mass concentration, and copy number, from mass ± volume and either a length or a sequence.

Input parameters:

- `length` (integer): Length in bp (dsDNA) or nt (ssDNA/ssRNA). Ignored when a sequence is given.
- `massNg` (number): Mass in nanograms.
- `sequence` (string): Optional sequence — overrides length and gives an exact molar mass from base composition.
- `type` (string): Molecule type.
- `volumeUl` (number): Volume in microlitres (0 = unknown; needed for concentration).

### `site_directed_mutagenesis` (~319 tokens)

Site-directed mutagenesis designer

Design site-directed mutagenesis primers (QuikChange overlapping or Q5 back-to-back) for a nucleotide substitution or an amino-acid codon swap.

Input parameters:

- `armTmTarget` (number): Target Tm (°C) for each template-binding arm.
- `dntpMM` (number): Total [dNTP] (mM), chelates Mg2+.
- `editKind` (string): Edit at the nucleotide or amino-acid level.
- `frameStart` (integer): 1-based position of the first base of codon 1 (editKind='aa').
- `mgMM` (number): Divalent cation [Mg2+] (mM).
- `naMM` (number): Monovalent cation [Na+]/[K+] (mM).
- `newBase` (string): Replacement base (editKind='nt').
- `oligoNM` (number): Total strand concentration (nM).
- `organism` (string): Codon-usage table for choosing the new codon (editKind='aa').
- `position` (integer): 1-based position to substitute (editKind='nt').
- `residue` (integer): 1-based residue number to change (editKind='aa').
- `style` (string): Mutagenic primer style.
- `targetAa` (string): Target amino acid, one-letter code incl '*' (editKind='aa').
- `template` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `cross_dimer` (~60 tokens)

Cross-Dimer

Screen two oligos for the most stable heterodimer (cross-dimer) between them.

Input parameters:

- `sequenceA` (string, required): First oligo (5'→3').
- `sequenceB` (string, required): Second oligo (5'→3').

### `primer_specificity` (~207 tokens)

Primer specificity screen

Self-hosted e-PCR-style screen for off-target amplicons predicted by a primer pair against a small set of curated reference genomes (currently: E. coli K-12 MG1655 — see genomesChecked for the exact list). This checks background/host-genome specificity, NOT whether the primers hit your intended target — pair it with in_silico_pcr against your own template for that. Batchable over candidate REVERSE primers against one fixed forward primer (screen many candidates against a shared partner) — not independent primer-pair batching, which this tool doesn't support.

Input parameters:

- `forwardPrimer` (string, required): Forward primer, 5'→3'.
- `maxMismatches` (integer): Mismatches tolerated per primer against a reference genome.
- `maxProductLength` (integer): Ignore candidate off-target products longer than this (bp) — a search-window cap, not a biological claim.
- `reversePrimer` (string, required): Reverse primer, 5'→3'.

### `restriction_sites` (~81 tokens)

Restriction sites

Find restriction enzyme recognition sites in a DNA sequence.

Input parameters:

- `circular` (boolean): Treat the sequence as circular (plasmid) so sites spanning the origin are found.
- `enzymes` (array): Enzyme names to scan; omit to scan all curated enzymes.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `double_digest` (~64 tokens)

Double digest buffer

Recommend a single NEB buffer (and flag caveats) for digesting with two enzymes in one tube.

Input parameters:

- `enzymeA` (string, required): First enzyme name (e.g. EcoRI).
- `enzymeB` (string, required): Second enzyme name (e.g. BamHI).

### `cloning_simulate` (~374 tokens)

Cloning simulator

Assemble fragments by Gibson/overlap, Golden Gate (Type IIS) or restriction–ligation, returning the product and junction primers.

Input parameters:

- `armTmTarget` (number): Target annealing Tm (°C) for primer arms.
- `circular` (boolean): Produce a circular product.
- `dephosphorylateVector` (boolean): CIP/rSAP-dephosphorylate the vector to suppress self-ligation background (restriction method).
- `enzyme` (string): Type IIS enzyme for Golden Gate (e.g. BsaI, BbsI, Esp3I (BsmBI)).
- `enzyme3` (string): Insert 3′ enzyme (restriction method).
- `enzyme5` (string): Insert 5′ enzyme (restriction method).
- `fragments` (array): Fragments (5′→3′), assembled head-to-tail. Used by gibson/goldengate.
- `insert` (string): Insert sequence (restriction method).
- `method` (string, required): Assembly method.
- `names` (array): Optional labels for each fragment.
- `overlapLen` (integer): Gibson homology-arm length (bp).
- `topoMode` (string): TOPO chemistry (topo method): TA (Taq 3′-A), blunt, or directional (pENTR/D-TOPO, needs 5′-CACC on the insert).
- `vector` (string): Vector sequence (restriction method).
- `vectorEnzyme3` (string): Vector 3′ enzyme (restriction method); defaults to enzyme3.
- `vectorEnzyme5` (string): Vector 5′ enzyme (restriction method); defaults to enzyme5. Set a different, compatible enzyme (e.g. BglII for a BamHI insert) to model heterologous-overhang cloning.

### `plasmid_annotate` (~57 tokens)

Plasmid annotator

Auto-detect common cloning features (promoters, tags, origins, resistance markers, MCS, primers) on both strands.

Input parameters:

- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `construct_qc` (~193 tokens)

Construct QC linter

Lint a coding DNA sequence for premature stops, internal RBS/polyA motifs, unwanted restriction sites, GC extremes and repeats.

Input parameters:

- `avoidEnzymes` (array): Enzyme names whose internal sites should be flagged as errors.
- `crypticOrfMinAa` (integer): Minimum peptide length (aa) for a hidden alternate-frame ORF to be flagged.
- `frameStart` (integer): 1-based nucleotide where the reading frame begins.
- `gcHigh` (number): GC% above this flags a GC-rich window.
- `gcLow` (number): GC% below this flags an AT-rich window.
- `gcWindow` (integer): Sliding-window size (nt) for GC-extreme scanning.
- `homopolymerMin` (integer): Minimum run length to flag a homopolymer.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `construct_autofix` (~270 tokens)

Construct auto-fix (domestication)

Iteratively substitutes synonymous codons to resolve unwanted restriction sites (domestication for Golden Gate), homopolymers, tandem repeats, predicted secondary structure, cryptic RBS/polyA motifs and hidden alternate-frame ORFs that construct_qc flags — without changing the encoded protein (verified). Does NOT touch premature stops or GC extremes; re-run construct_qc afterward to confirm. A native TypeScript alternative to a constraint-solver sidecar.

Input parameters:

- `avoidEnzymes` (array): Enzyme names whose internal sites should be removed (e.g. ["BsaI","BsmBI"] for Golden Gate domestication).
- `crypticOrfMinAa` (integer): Minimum peptide length (aa) for a hidden alternate-frame ORF to be flagged.
- `frameStart` (integer): 1-based nucleotide where the reading frame begins.
- `gcHigh` (number)
- `gcLow` (number)
- `gcWindow` (integer)
- `homopolymerMin` (integer)
- `maxPasses` (integer): Repeat full passes until clean or no further progress.
- `organism` (string): Codon-usage table to prefer among synonymous options.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `virtual_gel` (~90 tokens)

Virtual gel

Predict restriction-digest fragment sizes and their gel migration positions against a chosen DNA ladder.

Input parameters:

- `circular` (boolean): Treat the sequence as circular (plasmid).
- `enzymes` (array): Enzyme names to digest with.
- `ladder` (string): DNA ladder to plot alongside the sample lane.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `protein_properties` (~71 tokens)

Protein Properties

Protein properties: molecular weight, isoelectric point, GRAVY, extinction coefficient and composition.

Input parameters:

- `chargeStep` (number): pH step for the net-charge titration curve (0–14).
- `sequence` (string, required): Protein sequence (one-letter amino-acid codes; non-AA characters ignored).

### `protein_hydrophobicity` (~110 tokens)

Hydrophobicity Profile

Sliding-window hydropathy/hydrophobicity profile (ProtScale-style) over a published amino-acid scale.

Input parameters:

- `scale` (string): Amino-acid scale. Kyte-Doolittle and Eisenberg are hydrophobicity; Hopp-Woods is hydrophilicity.
- `sequence` (string, required): Protein sequence (one-letter amino-acid codes; non-AA characters ignored).
- `window` (integer): Sliding-window size (clamped to an odd number ≥ 1).

### `protease_digestion` (~148 tokens)

Protease Digestion

In-silico protease/chemical digestion: cleave a protein and report each peptide's position, length and neutral mass.

Input parameters:

- `maxMass` (number): Optional upper bound on neutral monoisotopic mass (Da).
- `maxPeptides` (integer): Cap on the number of returned peptides.
- `minMass` (number): Optional lower bound on neutral monoisotopic mass (Da).
- `missedCleavages` (integer): Allowed missed internal cleavages (0–2).
- `protease` (string): Protease or chemical cleavage agent.
- `sequence` (string, required): Protein sequence (one-letter amino-acid codes; non-AA characters ignored).

### `codon_optimize` (~72 tokens)

Codon optimiser

Codon-optimise a protein (or coding DNA) for an expression host by picking the most-frequent codon per residue.

Input parameters:

- `organism` (string)
- `protein` (string, required): Protein sequence (one-letter codes). Coding DNA/RNA is accepted and translated (frame +1) first.

### `codon_adaptation_index` (~111 tokens)

CAI analyser

Codon Adaptation Index (CAI) and per-codon relative adaptiveness of a CDS against an expression host, with rare-codon and GC3 analysis.

Input parameters:

- `frameStart` (integer): 1-based position to start reading codons.
- `organism` (string)
- `rareThreshold` (number): Relative adaptiveness (w) below this flags a codon as rare.
- `sequence` (string, required): Coding sequence (DNA/RNA; should start in-frame at ATG).

### `pairwise_alignment` (~117 tokens)

Pairwise Alignment

Global (Needleman-Wunsch) or local (Smith-Waterman) pairwise alignment of two sequences with match/mismatch/gap scoring.

Input parameters:

- `gap` (number): Linear gap penalty (per gap position).
- `match` (number): Match score.
- `mismatch` (number): Mismatch penalty.
- `mode` (string)
- `seqA` (string, required): First sequence (raw or FASTA; nucleotide or protein).
- `seqB` (string, required): Second sequence (raw or FASTA; nucleotide or protein).

### `multiple_sequence_alignment` (~57 tokens)

Multiple Sequence Alignment

Center-star multiple sequence alignment of a multi-FASTA input, with consensus and per-column conservation.

Input parameters:

- `input` (string, required): Two or more sequences in multi-FASTA format (>name / sequence). Up to 25 are aligned.

### `variant_comparator` (~112 tokens)

Variant Comparator

Align a query to a reference and call variants (substitutions, insertions, deletions) in HGVS g. notation, with optional coding effects.

Input parameters:

- `coding` (boolean): Treat as a coding sequence and report amino-acid effects.
- `frameStart` (integer): 1-based reading-frame start (used when coding is true).
- `query` (string, required): Query / variant sequence (raw or FASTA).
- `reference` (string, required): Reference / wild-type sequence (raw or FASTA).

### `crispr_grna_design` (~139 tokens)

CRISPR gRNA designer

Find and score candidate guide RNAs (protospacer + PAM) in a target DNA for common nucleases (SpCas9, SpCas9-NG, SaCas9, Cas12a).

Input parameters:

- `minScore` (number): Only return guides with a heuristic score at least this high (0–100).
- `nuclease` (string): Nuclease id. Omit to just list the available nucleases (no scan is performed).
- `searchReverseStrand` (boolean): Also scan the reverse strand for guides.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `crispr_offtarget_check` (~164 tokens)

CRISPR guide off-target check

Screen a guide's protospacer for off-target sites (protospacer match + valid PAM, both strands) against a small curated set of common lab reference genomes (see genomesChecked) — NOT a whole human/mouse genome search. Use this the same way primer_specificity is used: a useful sanity check within the covered organisms, not a clearance guarantee for a mammalian expression host.

Input parameters:

- `maxMismatches` (integer): Mismatches tolerated between the protospacer and a candidate genomic site.
- `nuclease` (string): Nuclease id — determines the PAM pattern/side required at each candidate site.
- `protospacer` (string, required): The guide's protospacer sequence, 5'→3' (no PAM).

### `crispr_hdr_donor` (~489 tokens)

HDR donor designer

Build an HDR donor (homology arms flanking an edit) from a target sequence and either an explicit edit window (editStart/editEnd) or a guide's cut site (guideStart/guideEnd/guideStrand/nuclease — SpCas9-family only; Cas12a's staggered cut needs an explicit editStart/editEnd). Also designs genotyping primers spanning the edit site on the original sequence (a real size-shift or sequencing target to confirm the edit), reusing the same primer-design engine as primer_design.

Input parameters:

- `armLength` (integer): Homology arm length (bp) on each side. Use ~30–60 for an ssODN donor, ~500–1000 for a dsDNA donor plasmid.
- `blockPam` (boolean): When a SpCas9-family guide is supplied and the edit does not already disrupt its PAM, fold a PAM-blocking mutation (silent when a CDS frame is given) into the donor so the edited allele can't be re-c…
- `designGenotypingPrimers` (boolean): Also design a primer pair (on the original targetSequence) whose product spans the edit site.
- `editEnd` (integer): 1-based inclusive end of the region being replaced; editEnd = editStart-1 denotes a pure insertion with nothing removed. Omit to derive from the guide's cut site.
- `editStart` (integer): 1-based start of the region being replaced. Omit to derive from guideStart/guideEnd/guideStrand instead.
- `frameStart` (integer): Optional 1-based CDS reading-frame start; makes the PAM-blocking mutation synonymous where possible.
- `guideEnd` (integer): 1-based forward-strand end of the guide's protospacer.
- `guideStart` (integer): 1-based forward-strand start of the guide's protospacer (alternative to editStart/editEnd, for an insertion exactly at the cut site).
- `guideStrand` (string): Strand the guide's protospacer is on.
- `nuclease` (string): Needed only when deriving the cut site from guideStart/guideEnd/guideStrand.
- `replacement` (string, required): Sequence to insert/substitute ("" for a pure deletion).
- `targetSequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `parse_genbank` (~47 tokens)

GenBank Parser

Parse a GenBank flat file into its locus, definition, features and sequence.

Input parameters:

- `text` (string, required): A GenBank flat file (LOCUS … FEATURES … ORIGIN … //).

### `sequence_format_convert` (~91 tokens)

Sequence Format Converter

Convert between FASTA and GenBank (whole sequence, CDS or protein), or export to TSV.

Input parameters:

- `from` (string): Input format; 'auto' sniffs it from the first meaningful line.
- `input` (string, required): A FASTA or GenBank record to convert.
- `to` (string): Output format. fasta-cds / fasta-protein extract CDS features (GenBank input only).

### `seqfile_stats` (~102 tokens)

FASTA/FASTQ Stats

Statistics for a FASTA or FASTQ file: count, length distribution, N50, GC content and (FASTQ) mean quality.

Input parameters:

- `input` (string, required): FASTA or FASTQ text (raw sequence is treated as single-record FASTA).
- `qualityOffset` (integer): FASTQ Phred ASCII offset (33 = Sanger/Illumina 1.8+, 64 = Illumina 1.3–1.7).

### `parse_sanger_trace` (~85 tokens)

Sanger Trace Parser

Decode a Sanger ABIF (.ab1 / .abi) chromatogram: base calls, per-base quality, the four dye-channel traces and peak locations.

Input parameters:

- `fileBase64` (string, required): The binary ABIF (.ab1 / .abi) trace file, base64-encoded.
- `fileName` (string): Optional original file name (echoed back).

### `sanger_vs_reference` (~183 tokens)

Sanger vs Reference

Align a Sanger ABIF read to a reference and report identity plus every mismatch, insertion and deletion.

Input parameters:

- `fileBase64` (string): The binary ABIF (.ab1 / .abi) trace file, base64-encoded.
- `fileName` (string): Optional original file name (echoed back).
- `minCoverage` (number): Fraction of the reference the read must span before a PASS is meaningful; below this the verdict is 'ambiguous_low_coverage' regardless of identity. Lower it when the reference is intentionally just…
- `read` (string): Sanger read as FASTA or raw text (alternative to uploading an ABIF trace). Also the per-record field for plate-batch runs via /api/v1/batch.
- `reference` (string, required): Expected reference sequence (FASTA or raw).

### `characterize_sequence` (~130 tokens)

Characterize sequence

One-paste 'tell me everything': auto-detects DNA/RNA/protein, then reports composition, ORFs, single-cutter enzymes, end primers or protein properties, plus a BLAST link.

Input parameters:

- `endPrimerLength` (integer): Length of the naive end primers taken from each end.
- `maxOrfs` (integer): Maximum number of ORFs to return, longest first.
- `minOrfAa` (integer): Minimum ORF length in amino acids (nucleotide input only).
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `sequence_report` (~119 tokens)

Sequence report

One-click DNA analysis: composition, ORFs, restriction-enzyme scan (single cutters) and end-primer Tm composed into a single report with a copyable text block.

Input parameters:

- `endPrimerLength` (integer): Length of the naive end primers taken from each end.
- `maxOrfs` (integer): Maximum number of ORFs to return, longest first.
- `minOrfAa` (integer): Minimum ORF length in amino acids.
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `session_create` (~95 tokens)

Create a design session

Start a scratch session that holds several named sequences/values (e.g. vector, insert, forward/reverse primer) for use across multiple tool calls via session_run, instead of re-pasting them into every call. Sessions expire after 24 hours.

Input parameters:

- `entries` (object): Initial named entries, e.g. {"vector": "...", "insert": "..."}. Optional — you can also add entries later with session_set.

### `session_get` (~72 tokens)

Read a design session

Fetch named entries from a session. Prefer session_run for actually USING the values — it keeps raw sequences out of your context. Use this mainly to inspect or debug what a session currently holds.

Input parameters:

- `names` (array): Only return these entries; omit to return all of them.
- `sessionId` (string, required)

### `session_set` (~48 tokens)

Write to a design session

Add or overwrite named entries in an existing session.

Input parameters:

- `entries` (object, required): Named entries to add/overwrite, e.g. {"insert": "..."}.
- `sessionId` (string, required)

### `session_run` (~190 tokens)

Run a tool using session entries

Run any SeqBench tool, resolving selected arguments from a session's named entries instead of pasting them inline, and optionally store selected result fields back into the session by name. This is the main way to chain a multi-part design (vector + insert + primers) across calls without shuttling raw sequences through your own context.

Input parameters:

- `args` (object): Additional literal arguments, merged with the ones resolved from the session.
- `fromSession` (object): Map of { toolArgName: sessionEntryName } — resolves each named tool argument from the session before running.
- `sessionId` (string, required)
- `tool` (string, required): Name of any non-meta SeqBench tool (not batch, workflow, or another session_* tool).
- `writeBack` (object): Map of { resultFieldName: sessionEntryName } — stores selected fields of the result back into the session under these names.

### `sequence_fetch` (~231 tokens)

Fetch sequence by accession

Fetch a public DNA/protein record by accession from NCBI Nucleotide, NCBI Protein, UniProt, or Ensembl (e.g. NM_000546, NP_000537, P04637, ENSG00000141510). Only the accession is sent upstream. Use sequence_search first if you only know a gene/organism name, not an accession. For an Ensembl transcript ID this returns spliced cDNA; for a gene ID it returns the full genomic locus (introns included) — Ensembl's own default for each ID type.

Input parameters:

- `accession` (string, required): GenBank/RefSeq accession (e.g. NM_000546), UniProtKB accession (e.g. P04637), or Ensembl stable ID (e.g. ENSG00000141510, ENST00000335137).
- `db` (string): Database to query; auto-detects from the accession format.
- `format` (string): Output format (GenBank is only available for NCBI accessions — UniProt and Ensembl are FASTA-only).

### `sequence_search` (~177 tokens)

Search sequence databases by name

Resolve a gene/organism name — or a raw NCBI search term — to candidate accessions, instead of guessing one. Returns up to maxResults hits (accession, title, organism); pass the accession you want to sequence_fetch.

Input parameters:

- `db` (string)
- `gene` (string): Gene symbol/name, e.g. "BRCA1". Combined with organism (if given) into a search term.
- `maxResults` (integer): Up to 20.
- `organism` (string): Organism name, e.g. "Homo sapiens". Optional; narrows the gene search.
- `term` (string): Raw NCBI search term (advanced) — overrides gene/organism when given, e.g. "BRCA1[gene] AND Homo sapiens[orgn]".

### `protein_annotate_submit` (~122 tokens)

Submit a protein for domain/GO annotation

Submit a protein sequence to EBI InterProScan for domain architecture, family and GO-term annotation. Returns a jobId immediately — the job itself takes minutes; poll it with protein_annotate_poll.

Input parameters:

- `appl` (string): Restrict to one member database (e.g. "PfamA"); omit to run EBI's defaults across all of them.
- `goterms` (boolean): Include GO-term cross-references.
- `sequence` (string, required): Protein sequence, one-letter code (FASTA header, if any, is stripped).

### `protein_annotate_poll` (~65 tokens)

Poll a protein annotation job

Check an InterProScan job submitted via protein_annotate_submit. Returns {status, ready:false} while still running; once FINISHED, also returns the parsed domain architecture, per-match details and deduplicated GO terms.

Input parameters:

- `jobId` (string, required)

### `plasmid_identify` (~177 tokens)

Identify an unknown plasmid

Screen a query plasmid against a small curated set of common backbones (cloning vectors, expression vectors, BACs — see referencesChecked for the exact list) to identify which one(s) it resembles, separate an unmatched region (normal — your own insert) from a POSSIBLE CHIMERA (a region matching a different known backbone than its neighbor), and report per-match %identity/%coverage. NOT a search against Addgene's ~100k-plasmid catalog or PlasmidScope's 850k+ — a curated-set screen only.

Input parameters:

- `circular` (boolean): Treat the query as a circular molecule (most plasmids are).
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `topN` (integer): How many top-ranked backbone candidates to report.

### `plasmid_full_report` (~163 tokens)

Plasmid full report (identity + features + unexplained regions)

One combined view of 'what is this plasmid': recognized common features (from plasmid_annotate), backbone identity / possible chimera (from plasmid_identify), and — the two crossed together — any region that neither a curated backbone nor a recognized common feature explains. That last list is a triage signal (an unusual insert, an unannotated part, or worth a closer look), not a defect finding: a real gene-of-interest legitimately has no curated-feature match.

Input parameters:

- `circular` (boolean): Treat the query as a circular molecule (most plasmids are).
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `topN` (integer): How many top-ranked backbone candidates to report.

### `plasmid_deep_annotate` (~140 tokens)

Deep plasmid annotation (pLannotate)

Annotate a plasmid against pLannotate's open-source feature library — a much larger signature set (GenoLIB parts + Swiss-Prot, cross-referenced against ~195k Addgene-deposited plasmids) than plasmid_annotate's built-in curated list. Requires the optional pLannotate sidecar to be deployed and configured; throws a clear internal_error explaining how to set it up if it isn't.

Input parameters:

- `circular` (boolean): Treat the sequence as a circular plasmid (vs. linear).
- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `verify_construct` (~257 tokens)

Verify a claimed construct

Re-derive a construct's insert from the PCR (template + primers) claimed to have produced it, then check — independently of that claim — whether the expected insert actually appears (either orientation) in the claimed final construct, at what identity, and with exact mismatch positions if not. Optionally also checks for a premature stop in a declared reading frame. This re-derives from the claim's own stated inputs; it does not review the claim's prose.

Input parameters:

- `claimedConstruct` (string, required): The final sequence claimed to have been built.
- `expectedFrameStart` (integer): 1-based position in claimedConstruct where the intended reading frame begins. If given, flags a premature stop before the end of the aligned insert region.
- `insertForwardPrimer` (string, required): Forward primer used to amplify the insert, 5'→3'.
- `insertReversePrimer` (string, required): Reverse primer used to amplify the insert, 5'→3'.
- `insertTemplate` (string, required): PCR template the insert was amplified from.
- `maxPrimerMismatches` (integer): Mismatches tolerated per primer during PCR prediction.
- `templateCircular` (boolean): Treat insertTemplate as circular (e.g. amplifying from a plasmid).

### `verify_assembly` (~520 tokens)

Verify a full assembly recipe

Deterministic self-check: given the same method/parts cloning_simulate would use (restriction-ligation, Gibson, or Golden Gate — optionally deriving a part by in-silico PCR first), re-derive the expected WHOLE product and diff it against a claimed final sequence. Returns pass/fail plus the exact position and nature of any discrepancy — not an opinion, the same deterministic simulation SeqBench already runs, run a second time as a check. See verify_construct for a narrower, insert-only check that doesn't require declaring the vector/enzymes/method.

Input parameters:

- `armTmTarget` (number): Target annealing Tm (°C) for primer arms.
- `circular` (boolean): Treat the product/claimed construct as circular (most plasmids are).
- `claimedConstruct` (string, required): The sequence you claim you ended up with.
- `coding` (boolean): Report amino-acid effects of any mismatch, assuming claimedConstruct is (or contains) a coding sequence.
- `enzyme` (string): Type IIS enzyme for Golden Gate.
- `enzyme3` (string): 3′ enzyme (restriction method).
- `enzyme5` (string): 5′ enzyme (restriction method).
- `fragmentPcrs` (array): Parallel to fragments, same length: null (or omit) to use fragments[i] directly, or a PCR spec {template, forwardPrimer, reversePrimer, maxMismatches?, circular?} to derive that fragment instead.
- `fragments` (array): Fragments (5′→3′), assembled head-to-tail (gibson/goldengate). Use "" as a placeholder for any fragment supplied instead via the matching fragmentPcrs[i].
- `frameStart` (integer): 1-based reading-frame start on claimedConstruct, used when coding is true.
- `insert` (string): Insert sequence (restriction method). Omit if insertPcr is given.
- `insertPcr` (object): Derive the insert by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches?, circular?}.
- `method` (string, required): Assembly method used.
- `names` (array): Optional labels for each fragment.
- `overlapLen` (integer): Gibson homology-arm length (bp).
- `vector` (string): Vector sequence (restriction method). Omit if vectorPcr is given.
- `vectorPcr` (object): Derive the vector by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches?, circular?}.

### `golden_gate_fidelity` (~250 tokens)

Golden Gate overhang fidelity

Score a candidate set of 4-base Golden Gate/MoClo junction overhangs against real published T4-ligase ligation-count data: per-overhang specificity, the weakest link in the set, and any risky cross-reacting pairs. Optionally compare against a named published overhang set. This is SeqBench's own transparent scoring methodology — it does not reproduce NEB's/Potapov's own published aggregate fidelity percentages for named sets (their exact formula isn't disclosed anywhere accessible).

Input parameters:

- `compareToNamedSet` (string): Also score this published reference set (see namedSetsAvailable in the output) alongside your candidate set, for comparison.
- `dataset` (string): Which real ligation dataset to score against — generic T4 ligase, or an enzyme-specific one-pot dataset if that matches your actual digestion enzyme.
- `overhangs` (array, required): The candidate 4-base overhangs for one assembly (e.g. ["GGAG","TACT","AATG"]). At least 2, no duplicates.
- `riskThreshold` (number): Flag a pair as risky when the cross-reaction is at least this fraction of that pair's own total signal.

### `save_permalink` (~113 tokens)

Save a permanent shareable link

Run a registered tool and save its (arguments, result) pair under a short permanent code that anyone with the link can view read-only (/permalink/{code}). Use this to cite or share a specific result (e.g. a verify_construct or verify_assembly check) rather than re-pasting it.

Input parameters:

- `args` (object, required): Arguments for that tool, exactly as you would pass to it directly.
- `tool` (string, required): Name of the registered tool to run and save (e.g. "verify_construct").

### `sequencing_readback_verify` (~199 tokens)

Sequencing read-back verification

Align raw Sanger or NGS reads (FASTA or FASTQ) back onto a claimed reference sequence using minimap2, and report per-read mapping identity plus exact variant positions (substitutions/insertions/deletions), with a consensus view across reads and a corrected consensus sequence (the reference with every consensus-supported edit applied). Complements verify_construct/verify_assembly: those re-derive what a design SHOULD produce from its own stated inputs; this checks what a real sequencer actually read back.

Input parameters:

- `minSupportingReads` (integer): Minimum number of reads agreeing on a variant position for it to count as a consensus (candidate real) variant rather than single-read noise.
- `reads` (string, required): Raw reads in FASTA or FASTQ format (auto-detected). Up to 2000 reads / 5,000,000 total bp per call.
- `reference` (string, required): The claimed/expected reference sequence.

### `web_search` (~106 tokens)

Search the web

Search the live web (via Tavily) for information not covered by SeqBench's own tools — recent literature, protocols, vendor/reagent info, general facts. Returns a short synthesized answer (if available) plus ranked source snippets with URLs. This does not run any bioinformatics calculation itself; use the dedicated tools for that.

Input parameters:

- `max_results` (number): Maximum number of results to return (default 5, max 10).
- `query` (string, required): The search query.

### `id_map_submit` (~301 tokens)

Submit a batch gene/protein ID mapping job

Submit up to 1000 ids to UniProt's ID mapping service for a single confirmed-safe hop (e.g. Gene_Name -> UniProtKB-Swiss-Prot, or UniProtKB_AC-ID -> Ensembl/GeneID/RefSeq_Protein/Gene_Name). Returns a jobId immediately — poll it with id_map_poll.

Input parameters:

- `from` (string, required): Source id type: "Gene_Name", "Ensembl", "GeneID", "RefSeq_Protein", or "UniProtKB_AC-ID". UniProt's mapping graph is hub-and-spoke — see the "to" note.
- `ids` (array, required): The ids to map, up to 1000 (e.g. gene symbols, UniProt accessions, Ensembl gene IDs, Entrez GeneIDs, or RefSeq protein accessions, depending on "from").
- `taxId` (string): NCBI taxonomy id to disambiguate a gene symbol (only used when from="Gene_Name"). Defaults to human (9606) if omitted.
- `to` (string, required): Target id type. Supported single hops: Gene_Name/Ensembl/GeneID/RefSeq_Protein -> "UniProtKB-Swiss-Prot" (the only direct target for these), or "UniProtKB_AC-ID" -> Ensembl/GeneID/RefSeq_Protein/Gene…

### `id_map_poll` (~69 tokens)

Poll a batch ID mapping job

Check a UniProt id-mapping job submitted via id_map_submit. Returns {status, ready:false} while still running; once FINISHED, also returns the mapped ids (normalized regardless of which target database was requested) and any ids that failed to map.

Input parameters:

- `jobId` (string, required)

### `ortholog_map` (~176 tokens)

Find orthologs/paralogs for gene symbols across species

Look up the orthologous (or paralogous) gene for up to 50 gene symbols in a target species, via Ensembl's homology-by-symbol REST endpoint. Symbols with no homology record are reported in `unmapped`, never silently dropped.

Input parameters:

- `sourceSpecies` (string): Ensembl species slug the symbols belong to (e.g. "human", "mouse"). Defaults to "human".
- `symbols` (array, required): Gene symbols to look up, up to 50 (e.g. ["TP53", "BRCA1"]).
- `targetSpecies` (string, required): Ensembl species slug to find homologs in (e.g. "mouse", "rat", "zebrafish", "fruit_fly").
- `type` (string): Homology type to return. Defaults to orthologues.

### `volcano_plot_data` (~110 tokens)

Volcano plot data

Validate a differential-expression table (gene, log2 fold-change, p-value/FDR) and compute -log10(p) plus up/down/non-significant counts at conventional default thresholds (|log2FC|>=1, p<=0.05), for the Volcano Plot visualization. Invalid rows (non-finite log2FC, or p-value outside (0,1]) are dropped and reported rather than failing the whole batch.

Input parameters:

- `rows` (array, required): Differential expression rows, one per gene.

### `expression_heatmap_cluster` (~232 tokens)

Expression heatmap clustering

Hierarchically cluster a genes x samples expression matrix (UPGMA/average, complete, or single linkage; Euclidean or correlation distance) and return the row/column leaf order, dendrogram merge trees, and row-z-scored values for the Clustered Expression Heatmap visualization.

Input parameters:

- `clusterCols` (boolean): Cluster (reorder) samples.
- `clusterRows` (boolean): Cluster (reorder) genes.
- `distanceMetric` (string): correlation = 1 - Pearson r (the standard expression-heatmap default); euclidean = straight-line distance.
- `genes` (array, required): Row (gene) labels.
- `linkage` (string): average = UPGMA (standard default), complete = farthest-neighbor, single = nearest-neighbor.
- `samples` (array, required): Column (sample) labels.
- `values` (array, required): genes x samples numeric matrix — one row per gene, in the same order as `genes`.
- `zScoreRows` (boolean): Row-wise z-score each gene's values before returning (the conventional 'relative expression' heatmap normalization).

### `functional_enrichment` (~239 tokens)

Functional enrichment (GO + Reactome)

Over-representation analysis: test which GO terms (biological process / molecular function / cellular component) and Reactome pathways are statistically enriched in a query gene list versus a background, using the hypergeometric test with Benjamini-Hochberg FDR correction across all tested terms. Uses bundled GO Consortium + Reactome reference data (human only). KEGG is not included (its license does not permit bundling gene sets).

Input parameters:

- `background` (array): Custom background/universe gene symbols. If omitted, defaults to every gene present in the bundled GO+Reactome dataset (the 'only annotated genes' convention, as used by g:Profiler) rather than the w…
- `collections` (array): Which term collections to test. Defaults to all four.
- `genes` (array, required): Query gene symbols (human, e.g. "TP53"). Case-insensitive. Capped at 5000.
- `maxTermSize` (integer): Skip terms/pathways with more than this many background genes (matches clusterProfiler's default).
- `minTermSize` (integer): Skip terms/pathways with fewer than this many background genes.

### `hgvs_convert` (~234 tokens)

HGVS Variant Converter (c. <-> g. <-> p.)

Parse an HGVS "c." variant description (by gene symbol, RefSeq NM_, or Ensembl ENST accession), convert it to genomic (g.) coordinates via a real, live-fetched Ensembl exon/CDS map (transcripts resolved through the bundled MANE RefSeq<->Ensembl crosswalk), apply 3'-rule normalization to any del/dup/ins, and predict the protein (p.) effect where that is safely computable. Refuses cleanly — rather than guessing — for circular/mitochondrial genomes, RNA-level or protein-level input, uncertain/mosaic syntax, splice-junction-adjacent or inversion protein effects, and non-MANE/non-Ensembl transcripts.

Input parameters:

- `variant` (string, required): A full HGVS "c." variant description: "<accession or gene symbol>:c.<edit>", e.g. "NM_000546.6:c.215C>G" or "TP53:c.215C>G". Substitution (">"), deletion ("del"), duplication ("dup"), insertion ("ins…

### `fastq_qc_report` (~134 tokens)

FASTQ Deep QC Report

FastQC-style deep quality-control report for a FASTQ file: per-base quality and content, GC and length distributions, sequence duplication levels, overrepresented sequences, and adapter content — each with a warn/fail verdict against FastQC's own published thresholds.

Input parameters:

- `input` (string, required): FASTQ text: records of an '@id' header, sequence, '+' separator and quality line (four lines each).
- `qualityOffset` (integer): FASTQ Phred ASCII offset (33 = Sanger/Illumina 1.8+, 64 = Illumina 1.3-1.7).

### `fastq_trim` (~195 tokens)

FASTQ Adapter & Quality Trimmer

Trim FASTQ reads: an ungapped sliding-suffix adapter match (against the same named Illumina adapters as the QC report) followed by a BWA-style 3' quality trim (the same algorithm Cutadapt's own -q option reuses), then drops reads below a minimum length. Returns the trimmed FASTQ plus before/after read-count, mean-length and mean-quality stats.

Input parameters:

- `input` (string, required): FASTQ text: records of an '@id' header, sequence, '+' separator and quality line (four lines each).
- `minLength` (integer): Reads shorter than this after trimming are dropped.
- `qualityOffset` (integer): FASTQ Phred ASCII offset (33 = Sanger/Illumina 1.8+, 64 = Illumina 1.3-1.7).
- `qualityThreshold` (integer): 3' quality-trim threshold (Phred score).

### `alphafold_lookup` (~73 tokens)

Look up an AlphaFold structure prediction

Look up a UniProt accession in the AlphaFold Protein Structure Database (CC-BY 4.0). Returns confidence, model version and structure file URLs, or {found:false} when no prediction exists for that accession.

Input parameters:

- `accession` (string, required): UniProt accession, e.g. "P04637".

### `export_plate_layout` (~126 tokens)

PCR plate layout

Assign a set of PCR reactions (name + forward/reverse primer + optional template label) to wells on a 96-well plate, row-major (A1, A2, … A12, then B1, B2, … up to H12). Returns the well-assignment data for rendering a plate diagram; export_opentrons_protocol and export_echo_picklist build their downloadable files from this exact same layout, so all three always agree.

Input parameters:

- `reactions` (array, required): One entry per PCR reaction, up to 96 (a single 96-well plate).

### `export_opentrons_protocol` (~252 tokens)

Opentrons protocol export

Generate a downloadable Opentrons Python Protocol API (v2, OT-2) script that sets up the given PCR reactions on a 96-well PCR plate, at the same well positions export_plate_layout assigns. Uses real Opentrons labware/pipette API names confirmed against docs.opentrons.com and the Opentrons shared-data labware-definitions repository (opentrons_96_wellplate_200ul_pcr_full_skirt, opentrons_96_tiprack_20ul, opentrons_24_tuberack_nest_1.5ml_snapcap, nest_12_reservoir_15ml, p20_single_gen2) and the confirmed load_labware/load_instrument/transfer method signatures. Master-mix/primer/template/water volumes are clearly-labeled placeholder constants at the top of the script — this is a starting point to review and adapt for your own enzyme and instrument, not a certified ready-to-run protocol.

Input parameters:

- `protocolName` (string): Optional protocol name (used in the script's metadata).
- `reactions` (array, required): One entry per PCR reaction, up to 96 (a single 96-well plate).

### `export_echo_picklist` (~211 tokens)

Echo picklist export

Generate a downloadable Beckman/Labcyte Echo acoustic-liquid-handler picklist CSV (columns: Source Plate Name, Source Plate Type, Source Well, Destination Plate Name, Destination Well, Transfer Volume, Name — the header row reproduced from PyEcho, a real open-source Echo-picklist generator) for the given PCR reactions, at the same well positions export_plate_layout assigns. Assumes a 5 uL Echo-scale PCR reaction (master mix 2500 nL, each primer 250 nL, template 250 nL, water 1750 nL) — a commonly used acoustic-dispensing miniaturization scale, not a universal standard; rescale the volumes for your own protocol. Source/Destination Plate Type uses a placeholder Echo plate-type code (384PP_AQ_BP) — replace with the exact type from your own Echo Plate Type Library.

Input parameters:

- `reactions` (array, required): One entry per PCR reaction, up to 96 (a single 96-well plate).

### `variant_annotate` (~323 tokens)

Variant Annotator

One-box variant lookup against MyVariant.info: accepts an rsID, chrom:pos:ref:alt, genomic HGVS ("chr17:g.7676154G>C"), or transcript HGVS c. ("NM_000546.6:c.215C>G" / "TP53:c.215C>G", bridged via the hgvs_convert tool). Returns a ClinVar significance summary, gnomAD exome/genome allele frequencies, and CADD/SIFT/PolyPhen2/REVEL pathogenicity predictor scores — each section explicitly null when that source has no data, never silently omitted. See the result's own "caveats" for real data-freshness limits (frozen gnomAD/CADD snapshots, periodic ClinVar snapshot).

Input parameters:

- `assembly` (string): Genome build for rsID/chrom-pos-ref-alt/genomic-HGVS lookups (MyVariant.info's native default is hg19). Ignored for transcript "c." input, which is always bridged via GRCh38/hg38 (hgvs_convert's own…
- `variant` (string, required): An rsID ("rs1042522"), chrom:pos:ref:alt ("17:7676154:G:C", single-base substitutions only), genomic HGVS ("chr17:g.7676154G>C" or "17:g.7676154G>C"), or transcript HGVS c. ("NM_000546.6:c.215C>G" or…

### `gene_model` (~78 tokens)

Gene Model (Exon/CDS Structure)

The real exon/UTR/CDS structure of a human gene's canonical transcript, fetched live from Ensembl (the same exon/CDS map the HGVS Converter tool uses) — for rendering an exon diagram.

Input parameters:

- `gene` (string, required): A human gene symbol ("TP53") or Ensembl gene ID ("ENSG00000141510").

### `gene_dossier` (~154 tokens)

Gene/Target Dossier

A gene/drug-target dossier fanned out to five independent sources in one call: Open Targets (function, tractability, top associated diseases), an NCBI/UniProt plain-English function summary, ChEMBL (known drugs and their mechanism/clinical phase, cross-referenced with indications), ClinicalTrials.gov (trials by gene/condition term), and Europe PMC (top cited papers). Each source fails independently — a down source returns null/empty for its own section rather than failing the whole call, and every failure is listed in "sourceErrors" rather than silently omitted.

Input parameters:

- `gene` (string, required): A human gene symbol ("TP53") or Ensembl gene ID ("ENSG00000141510").

### `gene_expression` (~77 tokens)

Gene Expression Fingerprint

A gene's tissue-expression fingerprint: per-tissue median TPM from GTEx (v8) and subcellular localization / RNA tissue-specificity / protein class from the Human Protein Atlas, in one call.

Input parameters:

- `gene` (string, required): A human gene symbol ("TP53") or Ensembl gene ID ("ENSG00000141510").

### `prime_editing_design` (~328 tokens)

Prime Editing Studio (pegRNA)

Design SpCas9 prime-editing pegRNAs for a substitution, insertion, deletion, or small replacement: for each usable NGG PAM it builds the spacer, a primer-binding-site (PBS) length sweep targeting a ~30 C melting temperature, the reverse-transcriptase template (RTT) that encodes the edit, and the full 3' extension, plus PE3 nicking-sgRNA suggestions 40-90 bp away on the opposite strand. Designs where the edit destroys the pegRNA's own PAM (preventing re-nicking of the edited allele) are ranked first. Off-target activity is not evaluated (no in-browser reference genome).

Input parameters:

- `editEnd` (integer, required): 1-based inclusive end of the region being changed. For a pure insertion, set editEnd = editStart - 1.
- `editStart` (integer, required): 1-based inclusive start of the region being changed.
- `frameStart` (integer): Optional 1-based CDS reading-frame start, used only to annotate whether a PAM-blocking mutation would be silent.
- `insertedSeq` (string): Replacement bases (forward strand). Empty string means a deletion.
- `pbsLength` (integer): Optional preferred PBS length to highlight; a full 8-17 nt sweep is always returned.
- `rttHomology` (integer): Homology length (nt) 3' of the edit that the RTT should include (typically 10-16).
- `target` (string, required): Forward-strand target DNA (raw or FASTA), with flanking sequence around the intended edit.

### `prime_editing_twin_design` (~300 tokens)

twinPE Studio (dual pegRNA)

Design a twinPE pegRNA pair (Anzalone et al. 2022) for a replacement too large for a single pegRNA's RTT: a left pegRNA nicks the + strand at/before the replacement window and a right pegRNA nicks the - strand at/after it, each synthesizing a new 3' flap; both flaps are truncated at a shared overlap in the middle of the new sequence so they anneal and resolve the edit without an HDR donor. Off-target activity is not evaluated (no in-browser reference genome).

Input parameters:

- `newSequence` (string, required): New sequence (forward strand) to install in place of [replaceStart, replaceEnd]. Needs >= 2 bp.
- `overlapLength` (integer): Length (bp) of the shared overlap built into both pegRNAs' 3' flaps where they meet and anneal.
- `pbsLength` (integer): Optional preferred PBS length to highlight; a full 8-17 nt sweep is always returned.
- `replaceEnd` (integer, required): 1-based inclusive end of the region being replaced/deleted. For a pure insertion, set replaceEnd = replaceStart - 1.
- `replaceStart` (integer, required): 1-based inclusive start of the region being replaced/deleted.
- `target` (string, required): Forward-strand target DNA (raw or FASTA), with flanking sequence on both sides of the replacement window.

### `base_editing_design` (~259 tokens)

Base Editing Designer

Design cytosine (CBE, C→T) or adenine (ABE, A→G) base-editing gRNAs for an SpCas9 target: for each NGG gRNA it reports every editable base inside the editor's activity window, flags bystander edits (more than one editable base in the window), and — with a CDS reading frame — classifies each edit's amino-acid consequence (silent / missense / nonsense / stop-loss). Bystander-free guides are ranked first. Handles both strands (a C→T on the protospacer of a reverse-strand guide is reported as the forward-strand G→A).

Input parameters:

- `editor` (string): Base editor: be3/be4max (CBE, C→T) or abe7.10/abe8e (ABE, A→G).
- `frameStart` (integer): Optional 1-based CDS reading-frame start, to classify each edit's amino-acid consequence.
- `target` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `targetPosition` (integer): Optional 1-based forward-strand position of the base you intend to edit; only guides whose window covers it are returned.

### `sirna_design` (~196 tokens)

siRNA / shRNA Designer

Design siRNA duplexes against an mRNA target using the established Reynolds (2004) 8-criteria score and the Ui-Tei (2004) rules, plus a siDirect-style seed-duplex Tm off-target flag (≥21.5 °C). Returns ranked candidates with sense/guide oligos (with UU 3' overhangs) and, per candidate, a ready shRNA cassette (sense–loop–antisense–Pol III terminator). Heuristic sequence rules only — no RNA-folding accessibility model and no transcriptome-wide off-target search.

Input parameters:

- `minReynolds` (integer): Minimum Reynolds score (0–8) to keep; falls back to best-ranked if none qualify.
- `shRnaLoop` (string): Loop sequence used when assembling the shRNA cassette.
- `target` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `aso_design` (~165 tokens)

ASO Gapmer Designer

Design antisense-oligonucleotide (ASO) gapmers against an mRNA target: scans candidate sites, builds the antisense oligo in the standard 5-10-5 architecture (chemically-modified wings, central DNA gap for RNase H1, phosphorothioate backbone), and screens each for known liabilities (G-quadruplex motifs, CpG immunostimulation, self-complementarity, GC extremes). No transcriptome-wide off-target search.

Input parameters:

- `length` (integer): Total gapmer length (nt).
- `target` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `wing` (integer): Modified-wing length on each side (nt); the central gap = length − 2×wing.

### `kasp_primer_design` (~286 tokens)

KASP / ARMS Allele-Specific Primers

Design KASP/ARMS allele-specific genotyping primers for a SNP: two allele-specific forward primers differing only at the 3' terminal base (one per allele), each with the standard KASP universal tail (FAM for allele A, HEX for allele B), a deliberate internal ARMS secondary mismatch near the 3' end whose strength complements the natural allele mismatch (strong↔weak), and one common downstream reverse primer sized to a chosen amplicon range. Reuses the site's nearest-neighbor Tm engine.

Input parameters:

- `addSecondaryMismatch` (boolean): Engineer the internal ARMS destabilising mismatch near the 3' end.
- `alleleA` (string, required): First allele (single base) — gets the FAM tail.
- `alleleB` (string, required): Second allele (single base) — gets the HEX tail.
- `maxAmplicon` (integer): Maximum amplicon length for the common reverse primer.
- `minAmplicon` (integer): Minimum amplicon length for the common reverse primer.
- `snpPosition` (integer, required): 1-based position of the SNP on the forward strand.
- `target` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).
- `targetCoreTm` (number): Target Tm (°C) for the allele-specific primer core (before the universal tail).

### `rna_fold` (~126 tokens)

RNA Secondary Structure (MFE)

Predict an RNA secondary structure by minimum free energy (MFE) using a Zuker dynamic program with Turner 1999 nearest-neighbor stacking energies (no pseudoknots). Returns the dot-bracket structure, the estimated MFE (kcal/mol), and the list of base pairs. A from-scratch, in-browser implementation (there is no usable browser ViennaRNA); the simplified loop energy model makes the MFE a good comparative estimate, not a lab-grade absolute.

Input parameters:

- `sequence` (string, required): Nucleotide sequence (raw or FASTA; IUPAC accepted).

### `batch` (~105 tokens)

Batch (one tool over many records)

Run one SeqBench tool over many records at once. `input` is multi-FASTA or one sequence per line; `tool` is any batchable tool name; `args` are shared arguments. Returns a table of per-record results.

Input parameters:

- `args` (object): Shared arguments applied to every record.
- `input` (string, required): Multi-FASTA or one sequence per line.
- `tool` (string, required): Batchable tool name (e.g. gc_content, translate).

### `workflow` (~80 tokens)

Batch workflow (multi-tool pipeline)

Run a multi-tool pipeline over many records. `steps` is an ordered list of { tool, args?, from? }; each step's chained sequence feeds the next by default. `input` is multi-FASTA or one sequence per line.

Input parameters:

- `input` (string, required): Multi-FASTA or one sequence per line.
- `steps` (array, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-seqbench-workbench/api-mcp#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 66
- 2026-08-01: 65
- 2026-07-31: 65
- 2026-07-30: 65
- 2026-07-29: 64
- 2026-07-28: 63
- 2026-07-27: 62
- 2026-07-26: 62

## Links

- Remote endpoint: https://seqbench.com/api/mcp
- Website: https://seqbench.com/mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-seqbench-workbench/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-seqbench-workbench/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-seqbench-workbench/api-mcp
