com.seqbench/workbench
REMOTE · SEQBENCH.COM · SCANNED SEP 24
Hosted DNA/RNA/protein tools: primers, oligos, PCR, cloning, CRISPR, alignment, batch & pipelines.
Available components
Recent critical change
Authorization (15 Sept 2026). See the changelog before you install this server.
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. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (session_set). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 43409 tokens (~333/item across 130 items; 130 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 96% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 130 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 131 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the com.seqbench/workbench MCP server?
com.seqbench/workbench is a hosted endpoint at https://seqbench.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · seqbench.com
claude mcp add --transport http com-seqbench-workbench 'https://seqbench.com/api/mcp'
{
"mcpServers": {
"com-seqbench-workbench": {
"url": "https://seqbench.com/api/mcp"
}
}
} {
"servers": {
"com-seqbench-workbench": {
"type": "http",
"url": "https://seqbench.com/api/mcp"
}
}
} [mcp_servers.com-seqbench-workbench] url = "https://seqbench.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-seqbench-workbench": {
"type": "remote",
"url": "https://seqbench.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-seqbench-workbench --url 'https://seqbench.com/api/mcp' --transport streamable-http
mcp_servers:
com-seqbench-workbench:
url: "https://seqbench.com/api/mcp" {
"McpServers": {
"com-seqbench-workbench": {
"Transport": "http",
"Url": "https://seqbench.com/api/mcp"
}
}
} assistant mcp add com-seqbench-workbench -t streamable-http -u 'https://seqbench.com/api/mcp'
{
"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.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “rbs_design” rewrote its description, which is the text the model reads security
- Tool “rbs_library_design” rewrote its description, which is the text the model reads security
- Tool “rbs_predict” rewrote its description, which is the text the model reads security
- Tool “synthesis_complexity” rewrote its description, which is the text the model reads security
- New tool “barcode_audit” functional
- New tool “barcode_design” functional
- New tool “riboswitch_states” functional
- 19 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “multiple_sequence_alignment” rewrote its description, which is the text the model reads security
- Tool “rbs_design” rewrote its description, which is the text the model reads security
- Tool “rbs_predict” rewrote its description, which is the text the model reads security
- Schema quality: 38105 → 42027 ▼ functional
- New tool “elsa_capacity” functional
- New tool “elsa_design” functional
- New tool “nonrepetitive_parts_design” functional
- New tool “nonrepetitive_parts_find” functional
- New tool “operon_design” functional
- New tool “operon_scan” functional
- New tool “promoter_library_design” functional
- New tool “rbs_library_design” functional
- New tool “rbs_occlusion” functional
- New tool “synthesis_complexity” functional
- “characterize_sequence” reworded the description of “sequence” cosmetic
- “multiple_sequence_alignment” reworded the description of “input” cosmetic
- 18 Sept 26 0
- Tool “rbs_design” rewrote its description, which is the text the model reads security
- Tool “rbs_predict” rewrote its description, which is the text the model reads security
- 15 Sept 26 0
- Authorization: unverified → fail ▼ critical
- The server rewrote its instructions, which are the text every model session reads security
- The server changed its declared name: SeqBench MCP → com.seqbench/workbench security
- Tool “assembly_outcomes” rewrote its description, which is the text the model reads security
- Tool “base_edit_quant” rewrote its description, which is the text the model reads security
- Tool “batch” rewrote its description, which is the text the model reads security
- Tool “cloning_simulate” rewrote its description, which is the text the model reads security
- Tool “codon_optimize” rewrote its description, which is the text the model reads security
- Tool “crispr_ontarget” rewrote its description, which is the text the model reads security
- Tool “golden_gate_design” rewrote its description, which is the text the model reads security
- Tool “melting_temperature” rewrote its description, which is the text the model reads security
- Tool “oligo_analysis” rewrote its description, which is the text the model reads security
- Tool “oligo_cofold” rewrote its description, which is the text the model reads security
- Tool “oligo_pool_screen” rewrote its description, which is the text the model reads security
- Tool “parse_snapgene” rewrote its description, which is the text the model reads security
- Tool “prime_editing_efficiency” rewrote its description, which is the text the model reads security
- Tool “primer_specificity” rewrote its description, which is the text the model reads security
- Tool “rbs_design” rewrote its description, which is the text the model reads security
- Tool “rbs_predict” rewrote its description, which is the text the model reads security
- Tool “rna_fold” rewrote its description, which is the text the model reads security
- Tool “sirna_design” rewrote its description, which is the text the model reads security
- Tool “vector_library_get” rewrote its description, which is the text the model reads security
- Tool “vector_library_search” rewrote its description, which is the text the model reads security
- Tool “workflow” rewrote its description, which is the text the model reads security
- Tool “save_permalink” is now declared destructive security
- Tool “session_run” is now declared destructive security
- Tool “session_set” is now declared destructive security
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- MCP protocol version: 2025-11-25 → 2026-07-28 functional
- Server version: 1.1.0 → 2.0.0 functional
- New tool “primer_site_accessibility” functional
- New tool “promoter_predict” functional
- New tool “trace_diagnose” functional
- “base_edit_quant” reworded the description of “targetPosition” cosmetic
- “batch” reworded the description of “input” cosmetic
- “batch” reworded the description of “tool” cosmetic
- “cloning_diagnose” reworded the description of “annealingTempC” cosmetic
- “cloning_diagnose” reworded the description of “enzymes” cosmetic
- “cloning_next_observation” reworded the description of “annealingTempC” cosmetic
- “cloning_next_observation” reworded the description of “enzymes” cosmetic
- “cloning_simulate” reworded the description of “vector” cosmetic
- “codon_optimize” reworded the description of “protein” cosmetic
- “construct_qc” reworded the description of “avoidEnzymes” cosmetic
- “diagnostic_digest” reworded the description of “enzymes” cosmetic
- “editing_plate_quantify” reworded the description of “controlChannels” cosmetic
- “golden_gate_design” reworded the description of “dataset” cosmetic
- “kasp_primer_design” reworded the description of “addSecondaryMismatch” cosmetic
- “oligo_cofold” reworded the description of “b” cosmetic
- “pairwise_alignment” reworded the description of “mode” cosmetic
- “sequencing_readback_verify” reworded the description of “minSvSupport” cosmetic
- “sequencing_readback_verify” reworded the description of “platform” cosmetic
- “variant_to_construct” reworded the description of “addSecondaryMismatch” cosmetic
- “verify_assembly” reworded the description of “dephosphorylateVector” cosmetic
- “verify_assembly” reworded the description of “vector” cosmetic
- “virtual_gel” reworded the description of “enzymes” cosmetic
- “workflow” reworded the description of “input” cosmetic
- Tool “codon_adaptation_index” changed its title: CAI analyser → CAI analyzer cosmetic
- Tool “codon_optimize” changed its title: Codon optimiser → Codon optimizer cosmetic
- 14 Sept 26 0
- Tool “id_map_submit” rewrote its description, which is the text the model reads security
- Tool “protease_digestion” rewrote its description, which is the text the model reads security
- “id_map_submit” reworded the description of “ids” cosmetic
- “plasmid_deep_annotate” reworded the description of “sequence” cosmetic
- “rbs_design” reworded the description of “cds” cosmetic
- “rbs_predict” reworded the description of “sequence” cosmetic
- 13 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “crispr_grna_design” rewrote its description, which is the text the model reads security
- Schema quality: 33840 → 37769 ▼ functional
- New tool “cloning_next_observation” functional
- New tool “crispr_ontarget” functional
- New tool “golden_gate_design” functional
- New tool “outcome_deconvolve” functional
- New tool “read_placement_plan” functional
- New tool “sanger_assemble” functional
- New tool “trace_secondary_peaks” functional
- “primer_design” added an optional parameter “excludedRegions” cosmetic
- “primer_design” added an optional parameter “gcClamp” cosmetic
- “primer_design” added an optional parameter “maxPolyX” cosmetic
- “primer_design” added an optional parameter “minThreePrimeDG” cosmetic
- “sequence_format_convert” reworded the description of “to” cosmetic
- 12 Sept 26 0
- “sequencing_readback_verify” reworded the description of “reference” cosmetic
1 cosmetic change on this day. Switch on “Show cosmetic changes” to see it.
- 11 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “variant_annotate” rewrote its description, which is the text the model reads security
- New tool “parse_snapgene” functional
- “variant_annotate” reworded the description of “variant” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Sept 2026 · Probed https://seqbench.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=seqbench.com | CN=YE2,O=Let's Encrypt,C=US | 9 Aug 2026 | 7 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 66cea47aa65f5bcb38969e5c2581ea8989a |
| SANs: seqbench.com | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of seqbench.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| seqbench.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://seqbench.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://seqbench.com/api/mcp | HTTPS enforced | 301 | https://seqbench.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
riboswitch_states Fold a riboswitch with and without its ligand ~526
Fold a transcript twice — once freely, once with the aptamer held out of the secondary structure as a bound ligand would hold it — and report what changes at the ribosome binding site. Returns both structures, both free energies, the cost of occupying the aptamer, and whether the site becomes more or less accessible. This is the question a riboswitch design can be checked on before the bench: is the site sequestered in one state and free in the other. Returns NO activation ratio and no fold-change — see this tool's validation note for why that number is not offered. Pair with rbs_occlusion, which finds what can pair over the site in the first place. PREDICTED, NOT MEASURED. None is published for this combination, and none is claimed. The two folds are ViennaRNA MFE structures with its documented parameter set; what is NOT established is that the ligand-bound state is modelled correctly by holding the aptamer out of the secondary structure, which is an approximation of a three-dimensional binding event. No activation ratio is returned, because the only published validation set for predicting one (Espah Borujeni et al., NAR 2016;44(1):1) is CC BY-NC and unusable here. Valid for: single-strand RNA up to 1,000 nt at one temperature, with no pseudoknots and no tertiary structure. A translational riboswitch whose mechanism is sequestering the ribosome binding site — NOT transcriptional attenuators, NOT ribozymes, and NOT any switch whose aptamer overlaps the site it regulates.
| Name | Type | Req | Description |
|---|---|---|---|
| aptamerEnd | integer | – | 1-based end of the aptamer. |
| aptamerStart | integer | – | 1-based start of the aptamer — the region the ligand occupies. Omit both ends to fold freely and only report the site's accessibility. |
| sequence | string | yes | The transcript: aptamer, expression platform, and at least the start of the CDS. DNA or RNA. Max 1,000 nt, because it is folded twice. |
| siteEnd | integer | – | 1-based end of that region. |
| siteStart | integer | – | 1-based start of the region whose accessibility is the answer. Omit both ends and the ribosome footprint is located automatically from the first start codon and its Shine-Dalgarno. |
| temperature | number | – | Folding temperature in °C. A switch characterised at 37 °C is not a switch at 30 °C. |
No output schema declared.
No examples provided.
rna_fold RNA Secondary Structure (MFE) ~242
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. PREDICTED, NOT MEASURED. No held-out skill statistic is claimed for this implementation. The loop model omits terminal mismatches, dangling ends, coaxial stacking and special hairpins that ViennaRNA and RNAstructure include, so the MFE is a comparative estimate between candidates rather than a lab-grade absolute. Valid for: a single strand up to 600 nt at a fixed 37 °C. No pseudoknots, no two-strand hybridization, and no temperature dependence — a structure predicted here is not a structure at your annealing temperature.
| Name | Type | Req | Description |
|---|---|---|---|
| sequence | string | yes | Nucleotide sequence (raw or FASTA; IUPAC accepted). |
No output schema declared.
No examples provided.
sanger_assemble Sanger de novo assembly ~269
Assemble two or more Sanger reads into a contig WITHOUT a reference sequence — the forward/reverse pair of one insert, or a set of tiling reads. Orientation is worked out from the overlaps, ends are quality-trimmed, and the consensus is quality-weighted. Reports depth and agreement per position, every position where the reads disagree (including a base only one read has), and any read that overlapped nothing. Use sanger_vs_reference instead when you already know what the sequence should be.
| Name | Type | Req | Description |
|---|---|---|---|
| fasta | string | – | Alternative to `reads`: a multi-record FASTA of the reads. No quality, so no end trimming. |
| minIdentity | number | – | Lowest percent identity an overlap may have. |
| minOverlap | integer | – | Shortest overlap that may join two reads. |
| noTrim | boolean | – | Assemble the reads exactly as given, with no quality trimming. |
| reads | array | – | The reads, as [{name, sequence, quality?}]. `quality` is a per-base Phred array the same length as `sequence`; without it the read still assembles but its ends are NOT trimmed, which the result says. |
| trimThreshold | number | – | Phred threshold for end-trimming. Ignored for reads with no quality array. |
No output schema declared.
No examples provided.
sanger_indel_spectrum Sanger indel spectrum (editing efficiency without NGS) ~633
Quantify CRISPR editing from a pair of Sanger traces — an unedited control and the edited pool — by decomposing the edited trace onto shifted copies of the control. Returns the indel spectrum (how much of the pool carries each insertion or deletion size), the unedited fraction, and the R² of the decomposition, which is the number that says whether the model fits your traces at all. Non-negative least squares, so no allele is ever assigned a negative share. Does not work for base editing, which makes a mixed base rather than a shift. PREDICTED, NOT MEASURED. Every run reports its own R²: how much of the observed window the shifted-control basis actually explains. That is a measured adequacy of the model on YOUR traces, and a low value means the assumption is wrong here rather than that the edit is weak. On accuracy against a reference method for real samples, none is published for this implementation — the underlying decomposition is TIDE's, whose authors report their own concordance with amplicon sequencing, and that number does not transfer to this code so it is not quoted. This implementation's exact recovery of synthetic mixtures is deliberately not offered as validation either: it tests the arithmetic, not whether the model fits a real trace. Valid for: A pool of alleles that differ from one control read by simple insertions or deletions at a known cut site, where both reads come from the same amplicon and chemistry and both extend well past the cut. NOT valid for substitution-only edits — base editing produces a mixed base, not a shift, and this model cannot see it — nor for a knock-in whose insert is novel sequence rather than a frame shift of the control, nor for any run whose R² comes back low.
| Name | Type | Req | Description |
|---|---|---|---|
| controlBases | string | yes | Base calls of the UNEDITED control read. |
| controlChannels | array | yes | Per-base [A, C, G, T] intensities of the control read, one row per called base, read at that base's peak location (trace arrays are indexed by scan, not by base). |
| cutPosition | number | yes | 1-based position of the expected cut, in CONTROL read coordinates. |
| editedBases | string | yes | Base calls of the edited pool's read. |
| editedChannels | array | yes | Per-base [A, C, G, T] intensities of the edited read, same convention. |
| guard | number | – | Bases skipped immediately after the cut, where the trace is least reliable. |
| maxIndel | number | – | Largest indel to include in the basis, in bp (max 20). Every shift from −maxIndel to +maxIndel is fitted. |
| offset | number | – | Override the alignment offset between the reads. By default it is found from the base calls upstream of the cut, which is reported back along with the identity achieved. |
| windowLength | number | – | Bases downstream of the cut used for the decomposition (20-300). Longer is better conditioned but needs more clean read. |
No output schema declared.
No examples provided.
sanger_knockin_quant Knock-in / prime-edit rate from Sanger traces ~1,312
Measure the rate of a SPECIFIC intended edit from a pair of Sanger traces — an unedited control and the edited pool — by decomposing the edited trace onto three things at once: the wild-type allele, the intended edited allele, and the unintended indels. Serves both readouts that need this: HDR knock-in rate (what fraction of the pool carries the donor's edit, including an insert of novel sequence), and prime editing (the pegRNA's intended substitution, insertion, deletion or replacement as the intended column, and the indel byproducts at the nick as the shift columns). This is what sanger_indel_spectrum cannot do: that tool's basis is indexed by indel LENGTH, so an intended 6 bp knock-in and an accidental 6 bp NHEJ deletion are one column there. Returns knock-in / wild-type / unintended-indel percentages, the byproduct spectrum by shift, and the R² that says whether the model fits your traces at all. Non-negative least squares, so no allele is ever assigned a negative share. For a substitution or replacement the reference allele you name is checked against the control read before anything is fitted; an insertion and a deletion name no reference bases, so there only the position can be range-checked. PREDICTED, NOT MEASURED. Every run reports its own R²: how much of the observed window the basis actually explains, measured on YOUR traces, where a low value means the model is wrong here rather than that the edit is weak. On agreement with a reference method for real samples — amplicon sequencing or clonal genotyping — none is published for this implementation. The underlying decomposition is TIDE/TIDER's, whose authors report their own concordance, and that number does not transfer to this code so it is not quoted. This implementation's near-exact recovery of synthetic mixtures is deliberately not offered as validation: a synthetic mixture is built from the same idealised one-hot peaks the basis assumes, so recovering it tests the arithmetic and cannot test the assum…
| Name | Type | Req | Description |
|---|---|---|---|
| altAllele | string | – | The bases the edit installs in their place (substitution and replacement). |
| controlBases | string | yes | Base calls of the UNEDITED control read. |
| controlChannels | array | yes | Per-base [A, C, G, T] intensities of the control read, one row per called base, read at that base's peak location (trace arrays are indexed by scan, not by base). |
| cutPosition | number | – | 1-based CONTROL position where UNINTENDED indels start — the nuclease cut or the PE nick. Defaults to the edit start. Separate from editPosition because a byproduct allele is wild-type up to the cut… |
| deletedLength | number | – | How many bases are deleted (deletion only). |
| editKind | string | yes | Shape of the intended edit, spelled as prime_editing_design spells it. "substitution" replaces bases one for one; "insertion" adds novel bases and replaces none; "deletion" removes bases and adds non… |
| editPosition | number | yes | 1-based position of the edit in CONTROL read coordinates: the first base the edit replaces. An insertion replaces nothing, so there it is the base the insert lands immediately BEFORE — one MORE than… |
| editedBases | string | yes | Base calls of the edited pool's read. |
| editedChannels | array | yes | Per-base [A, C, G, T] intensities of the edited read, same convention. |
| insertedSeq | string | – | The novel bases inserted (insertion only). |
| maxIndel | number | – | Largest unintended indel to fit, in bp (1-20; out of range is rejected, not clamped). Every shift from −maxIndel to +maxIndel is included except 0, which is wild-type. The intended edit's OWN net shi… |
| offset | number | – | Override the alignment offset between the reads (whole number, −40 to 40). By default it is found from the base calls upstream of the edit. upstreamIdentity is always measured AT the offset used, so… |
| refAllele | string | – | The control bases the edit replaces (substitution and replacement). Checked against the control read: a mismatch is rejected, because building the intended-edit column at the wrong position yields a… |
| windowLength | number | – | Bases from the edit site downstream used for the decomposition (20-300; out of range is rejected, not clamped). Unlike sanger_indel_spectrum there is no guard region: the edited positions themselves… |
No output schema declared.
No examples provided.
sanger_plate_verify Sanger plate clone verdicts ~600
Judge a whole plate of Sanger reads against one construct and return one row per clone: PASS, POINT_MUTATION, INDEL, VECTOR_ONLY (the insert is absent), WRONG_INSERT (the backbone matches and the insert does not), LOW_COVERAGE, or AMBIGUOUS. Reads are grouped into clones from their FASTA/FASTQ record names (facility conventions like PlateA_A01_pXY-1_M13F, pXY-1_T7-F, 2026-08-01_pXY_clone3_R), and every read's assignment is reported with a confidence so a grouping can be corrected rather than trusted. Each clone's reads are piled up in reference coordinates, so a difference one read reports where other covering reads read the reference is reported as the sequencing error it is, not as a mutation — and a position no read covered is never PASS. Every verdict cites the positions it rests on. Give insertStart/insertEnd to have clones judged over the insert alone, which is also what VECTOR_ONLY and WRONG_INSERT need.
| Name | Type | Req | Description |
|---|---|---|---|
| circular | boolean | – | Treat the construct as a plasmid, so a read crossing its arbitrary linear start is aligned through the join instead of having its tail discarded. |
| grouping | string | – | How reads become clones. "auto" parses the record names; "one-clone" treats every read as being of one clone (use when the names carry nothing); "per-read" judges each read on its own. |
| insertEnd | integer | – | 1-based last base of that stretch. |
| insertLabel | string | – | What to call it in the verdicts. Default "the insert". |
| insertStart | integer | – | 1-based first base of the stretch that has to be right (the insert). With insertEnd, every clone is judged over this span alone — the only honest framing when one 900 bp read cannot cover a 6 kb plas… |
| qualityOffset | integer | – | ASCII offset of the FASTQ quality string. 33 for anything modern, 64 for pre-1.8 Illumina. |
| reads | string | yes | All the plate's reads as FASTA or FASTQ (auto-detected). The record name is what the clone grouping is read from. Up to 384 reads / 400,000 total bases, and (reference length x total read bases) must… |
| reference | string | yes | The intended construct (raw or FASTA). Up to 20,000 bp. |
| trimThreshold | integer | – | Phred threshold for trimming both ends of a read (BWA's rule). Only applies to FASTQ input, which is the only input that carries quality. |
No output schema declared.
No examples provided.
sanger_vs_reference Sanger vs Reference ~183
Align a Sanger ABIF read to a reference and report identity plus every mismatch, insertion and deletion.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Expected reference sequence (FASTA or raw). |
No output schema declared.
No examples provided.
save_permalink Save a permanent shareable link ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| args | object | yes | Arguments for that tool, exactly as you would pass to it directly. |
| tool | string | yes | Name of the registered tool to run and save (e.g. "verify_construct"). |
No output schema declared.
No examples provided.
seqfile_stats FASTA/FASTQ Stats ~94
Statistics for a FASTA or FASTQ file: count, length distribution, N50, GC content and (FASTQ) mean quality.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | FASTA or FASTQ text (raw sequence is treated as single-record FASTA). |
| qualityOffset | integer | – | ASCII offset of the FASTQ quality string. 33 for anything modern, 64 for pre-1.8 Illumina. |
No output schema declared.
No examples provided.
sequence_fetch Fetch sequence by accession ~231
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.
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | yes | 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). |
No output schema declared.
No examples provided.
sequence_format_convert Sequence Format Converter ~165
Convert between FASTA and GenBank (whole sequence, CDS or protein), or export to TSV.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | – | Input format; 'auto' sniffs it from the first meaningful line. |
| input | string | yes | A FASTA or GenBank record to convert. |
| to | string | – | Output format. fasta-cds / fasta-protein extract CDS features (GenBank input only). GenBank in and 'genbank' out rewrites the record with its features, qualifiers and topology intact — it is a rewrit… |
No output schema declared.
No examples provided.
sequence_report Sequence report ~119
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Nucleotide sequence (raw or FASTA; IUPAC accepted). |
No output schema declared.
No examples provided.
sequence_search Search sequence databases by name ~177
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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]". |
No output schema declared.
No examples provided.
sequencing_readback_verify Sequencing read-back verification ~1,087
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). Each alignment also reports how much of the READ was used (queryCoveragePct/clippedBases), since identity is measured over the aligned portion only and a partially-used read would otherwise score perfectly. Set circular: true for a plasmid so reads crossing the reference's arbitrary linear start are aligned through the join rather than cut short at it. Also calls STRUCTURAL variants from split alignments — a large deletion, tandem duplication, inversion or backbone rearrangement never appears as a run of mismatches, only as one read aligning at several distant reference positions, so per-base calling reports a perfect clone — and returns a coverage depth profile with the regions no read reached at all, since "never read" is not "correct". On a circular reference one junction cannot always tell an event of length d from one of length referenceLength − d the other way round; where the read's own blocks and the coverage profile settle it they do, and where they do not the call carries an alternateInterpretation with the other reading rather than presenting one as a finding. Set platform (nanopore/pacbio/illumina/sanger) to pick minimap2's preset; the preset used is reported back. 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.
| Name | Type | Req | Description |
|---|---|---|---|
| breakpointTolerance | integer | – | How far apart two reads' breakpoints may sit and still count as the same event, in bp (default 50). Long-read breakpoints are fuzzy, and microhomology at a real junction moves the split legitimately. |
| circular | boolean | – | Treat the reference as a circular molecule (plasmid). Reads that straddle its arbitrary linear start are then aligned right through the join instead of being cut short there, so variants in the part… |
| 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. |
| minSvLength | integer | – | Smallest structural variant to report, in bp (default 50). Below this the per-base variant caller already reports the event from inside a single alignment, and on nanopore data the range is mostly th… |
| minSvSupport | integer | – | Distinct reads that must agree on the same breakpoint before a structural variant (large deletion, duplication, inversion, insertion) is reported. Default 3 — stricter than minSupportingReads on purp… |
| platform | string | – | Read type, which selects minimap2's alignment preset. "auto" (the default) passes no preset and uses minimap2's own defaults — whose parameters happen to be map-ont's, so nanopore data is already han… |
| reads | string | yes | Raw reads in FASTA or FASTQ format (auto-detected). Up to 2000 reads / 5,000,000 total bp per call. |
| reference | string | yes | The claimed/expected reference — bare bases, FASTA, or a whole GenBank record. Pass the GenBank record (your own map) to get consequences: every consensus edit is then placed against the features, so… |
No output schema declared.
No examples provided.
session_create Create a design session ~95
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.
| Name | Type | Req | Description |
|---|---|---|---|
| entries | object | – | Initial named entries, e.g. {"vector": "...", "insert": "..."}. Optional — you can also add entries later with session_set. |
No output schema declared.
No examples provided.
session_get Read a design session ~72
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.
| Name | Type | Req | Description |
|---|---|---|---|
| names | array | – | Only return these entries; omit to return all of them. |
| sessionId | string | yes | – |
No output schema declared.
No examples provided.
session_run Run a tool using session entries ~190
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | – |
| tool | string | yes | 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. |
No output schema declared.
No examples provided.
session_set Write to a design session ~48
Add or overwrite named entries in an existing session.
| Name | Type | Req | Description |
|---|---|---|---|
| entries | object | yes | Named entries to add/overwrite, e.g. {"insert": "..."}. |
| sessionId | string | yes | – |
No output schema declared.
No examples provided.
sirna_design siRNA / shRNA Designer ~383
Design siRNA duplexes against an mRNA target using the established Reynolds (2004) 8-criteria score and the Ui-Tei (2004) rules, plus the siDirect seed-duplex Tm off-target flag (≥21.5 °C, computed on siDirect's own RNA/RNA scale: Freier 1986 nearest-neighbor parameters, helix initiation A = −10.8, CT = 100 µM, 100 mM Na⁺). 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. PREDICTED, NOT MEASURED. These are rule counts, not a regression, and no skill statistic is claimed for the ranking. Target-site accessibility is not modeled (no folding) and no transcriptome-wide off-target search is performed, so a top-ranked candidate is a starting point for a knockdown panel, not a predicted knockdown level. Valid for: mRNA targets. The seed Tm is computed on siDirect's own RNA/RNA scale (Freier 1986 parameters, helix initiation A = -10.8, CT = 100 µM, 100 mM Na+) and is not comparable with the DNA/DNA Tm reported elsewhere in the toolkit.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Nucleotide sequence (raw or FASTA; IUPAC accepted). |
No output schema declared.
No examples provided.
site_directed_mutagenesis Site-directed mutagenesis designer ~818
Design site-directed mutagenesis primers (QuikChange overlapping or Q5 back-to-back) for a base substitution, an amino-acid codon swap, or an insertion/deletion/delins. The edit can be given as fields or, more simply, by NAME in `mutation`: "E52K", "p.Glu52Lys", "c.155A>G", "c.76_78del", "c.76_77insGGA", "c.76_78dup". A named mutation is checked against the template — if the reference allele it states is not what is actually at that position, the call is refused and the real base or residue is quoted back, because a coordinate belonging to a different transcript or the other strand yields perfectly well-formed primers for the wrong base. `interpretedAs` in the response says which reading was designed.
| Name | Type | Req | Description |
|---|---|---|---|
| armTmTarget | number | – | Target Tm (°C) for each template-binding arm. |
| deleteLength | integer | – | Template bases to remove, starting at `position` (delins edit). 0 with `insert` set is a pure insertion, placed immediately before `position`. |
| dntpMM | number | – | Total [dNTP] (mM), chelates Mg2+. |
| editKind | string | – | Edit level. Normally omitted — it is inferred from the fields you send (newBase means nt, targetAa means aa, insert/deleteLength means delins). |
| frameStart | integer | – | 1-based position of the first base of codon 1. Needed whenever the coding sequence does not start at base 1 of the template — a residue number means nothing without it. |
| insert | string | – | Bases to put in place of the deleted span (delins edit). Omit for a pure deletion. NOTE the convention when deleteLength is 0: the insert lands immediately BEFORE `position`, so position 101 + insert… |
| mgMM | number | – | Divalent cation [Mg2+] (mM). |
| mutation | string | – | The edit by name — "E52K", "p.Glu52Lys", "Q100*", "c.155A>G", "A155G", "c.76_78del", "c.76_77insGGA", "c.76_78dup", "c.76delinsAA". Replaces the field-by-field forms below. An unprefixed "A123G" is a… |
| naMM | number | – | Monovalent cation [Na+]/[K+] (mM). |
| newBase | string | – | Replacement base (nt edit). |
| oligoNM | number | – | Total strand concentration (nM). |
| organism | string | – | Codon-usage table for choosing the new codon (aa edit). Latin names and common strain/cell-line names are accepted. |
| position | integer | – | 1-based position to substitute (nt), or the first base of the span to replace (delins). Required for those forms — it is never assumed. For a pure insertion (deleteLength 0) it is the base the insert… |
| residue | integer | – | 1-based residue number to change (aa edit). |
| style | string | – | Mutagenic primer style. |
| targetAa | string | – | Target amino acid, one-letter code incl '*' (aa edit). |
| template | string | yes | Nucleotide sequence (raw or FASTA; IUPAC accepted). |
No output schema declared.
No examples provided.
synthesis_complexity Measure what makes a fragment hard to synthesise ~270
Measure the sequence features gene-synthesis vendors screen on — repeats (the single largest cause of synthesis failure), GC extremes, GC swings between adjacent windows, homopolymer runs and hairpin-forming inverted repeats — and report each against the threshold vendors publish. Returns measurements and named flags, never a success probability: refitted on the 303 REAL orders its authors publish (scripts/ssc-eval), the published classifier scores F1 0.866 against 0.878 for assuming every order succeeds, and transfers between ordering labs at AUC 0.423 — below chance. Pair with nonrepetitive_parts_design to fix the repeats it finds.
| Name | Type | Req | Description |
|---|---|---|---|
| includeProfile | boolean | – | Return the full per-window GC profile. Off by default — it is one row per window and most callers want the flags. |
| repeatMin | integer | – | Shortest repeated stretch to report, in bp (default 20, which is where vendor repeat filters sit). |
| sequence | string | yes | The fragment as it would be ordered, raw, FASTA or GenBank. Max 100,000 bp. |
| window | integer | – | Window for the GC profile, in bp (default 50). Vendors screen local GC, not just the average, so this is what the flags are computed over. |
No output schema declared.
No examples provided.
trace_diagnose Why is this Sanger read bad? ~254
Diagnose a failing Sanger chromatogram: the longest usable window (Mott trimming), whether there is signal above the noise at all, whether more than one molecule is in the tube and from which base, whether quality collapsed at a homopolymer or tandem repeat the polymerase stuttered through, and whether a dye blob or the instrument's own separation is the problem rather than the DNA. Each finding carries the measurement it is based on, what that pattern is usually caused by, and what to do next. Reads .ab1, .abi and .scf.
| Name | Type | Req | Description |
|---|---|---|---|
| fileBase64 | string | yes | The binary trace file (.ab1 / .abi / .scf), base64-encoded. |
| fileName | string | – | Optional original file name (echoed back, and used to explain a refusal). |
| mixedRatio | number | – | A second peak at or above this fraction of the called peak counts as a mixed position. Lower it to catch a minor species, raise it if ordinary crosstalk on your instrument is firing it. |
| qualityCutoff | number | – | Phred score the usable window is measured at. 20 is the conventional 1-in-100 line. |
No output schema declared.
No examples provided.
trace_secondary_peaks Mixed bases and the uncalled tail of a Sanger trace ~412
Read a chromatogram for what the basecaller did not report: positions where a second dye is present under the called base (a heterozygote, or a contaminating template), and bases still visible in the scan past where base calling stopped. Both are arithmetic on the channel intensities already in the file — a ratio, and a peak position extrapolated from the median spacing — not a model. Returns the called sequence rewritten with IUPAC ambiguity codes, the extra bases, and every threshold that produced the answer. Takes the SCAN arrays, because the tail lies past the last peak location.
| Name | Type | Req | Description |
|---|---|---|---|
| baseCalls | string | yes | Base calls, e.g. from parse_sanger_trace. |
| channelA | array | yes | Full A channel, indexed by SCAN (not by base). |
| channelC | array | yes | Full C channel, indexed by scan. |
| channelG | array | yes | Full G channel, indexed by scan. |
| channelT | array | yes | Full T channel, indexed by scan. |
| maxExtension | number | – | Most extra bases to call past the last called base (0-400). The cap is part of the method: peak positions are extrapolated and the extrapolation drifts. |
| mixedRatio | number | – | Secondary/primary intensity ratio at which a position is reported as mixed (0-1 exclusive). A convention, not a measurement. |
| peakLocations | array | yes | Scan index of each called base's peak — one per base call. |
| quality | array | – | Optional per-base Phred scores; echoed beside each mixed position. |
| skipLeading | number | – | Bases at the read's start excluded from the mixed scan (0-1000). The dye blob lives here and lifts every channel; without this every read reports a wall of false heterozygotes at its start. |
| tailSignalToNoise | number | – | How far above the measured noise floor a channel must sit before the tail extension calls it (1-100). |
No output schema declared.
No examples provided.
translate Translate ~66
Translate a nucleotide sequence to protein (single frame or all six frames; standard code).
| Name | Type | Req | Description |
|---|---|---|---|
| frame | integer | – | – |
| sequence | string | yes | Nucleotide sequence (raw or FASTA; IUPAC accepted). |
| toStop | boolean | – | Stop at the first stop codon. |
No output schema declared.
No examples provided.
variant_annotate Variant Annotator ~343
One-box variant lookup against MyVariant.info: accepts an rsID, chrom:pos:ref:alt (colon- or hyphen-separated), 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).
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | An rsID ("rs1042522"), chrom:pos:ref:alt with either separator ("17:7676154:G:C" or "17-7676154-G-C", single-base substitutions only), genomic HGVS ("chr17:g.7676154G>C" or "17:g.7676154G>C"), or tra… |
No output schema declared.
No examples provided.
variant_comparator Variant Comparator ~112
Align a query to a reference and call variants (substitutions, insertions, deletions) in HGVS g. notation, with optional coding effects.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Query / variant sequence (raw or FASTA). |
| reference | string | yes | Reference / wild-type sequence (raw or FASTA). |
No output schema declared.
No examples provided.
variant_to_construct Variant to construct to genotyping bridge ~941
Turn one variant into one buildable plan: verify the reference allele actually sits where the coordinate says, apply the edit, design site-directed mutagenesis primers to install it, design KASP/ARMS allele-specific primers to genotype it afterwards, and consolidate everything into a single oligo order table. Takes either a construct sequence with a 1-based position and ref/alt alleles (offline, deterministic), or an HGVS "c." description resolved through the MANE crosswalk and a live Ensembl exon map. A mismatched reference allele is refused with the bases that were actually found there, because a coordinate that is right for another isoform yields a perfectly valid primer set for the wrong base. Bases shared by both alleles are trimmed first, so a VCF-anchored pair is designed as the substitution or indel it actually is. Mutagenesis covers every class (a substitution, an insertion, a deletion and a multi-base replacement are all one interval replacement); KASP needs a single-base substitution's 3'-terminal base, so for an indel the genotyping half comes back as a named omission with the reason and the readout that does work, never as an empty list.
| Name | Type | Req | Description |
|---|---|---|---|
| addSecondaryMismatch | boolean | – | Engineer the ARMS destabilizing mismatch 3 nt from the allele-specific primer's 3' end. |
| altAllele | string | – | OFFLINE MODE. Bases installed. Use "-" or "" for a pure deletion. |
| armTmTarget | number | – | Target Tm (°C) for each mutagenic primer's template-binding arm (45-80; the arm is grown between 10 and 30 nt, so a target outside that range is refused rather than clamped to the shortest or longest… |
| flank | integer | – | NETWORK MODE. Bases of genomic context fetched either side of the variant (60-1000). Needs to cover the allele-specific core upstream and the genotyping amplicon downstream. |
| label | string | – | Name stem for the ordered oligos. Defaults to the HGVS string (network mode) or a positional label like "A100G" (offline). |
| maxAmplicon | integer | – | Maximum genotyping amplicon length. Refused below 36 bp, the shortest KASP product that can exist (an 18 nt core plus an 18 nt reverse primer), and refused below minAmplicon — both are unsatisfiable… |
| minAmplicon | integer | – | Minimum genotyping amplicon length, measured from the allele-specific primer's 5' end (which sits one core-length upstream of the variant) to the reverse primer's 5' end. Must not exceed maxAmplicon. |
| position | integer | – | OFFLINE MODE. 1-based position of the first base of refAllele on `sequence`. For a pure insertion (empty refAllele) the alternate bases are inserted immediately BEFORE this position. |
| refAllele | string | – | OFFLINE MODE. Bases replaced, as they appear on `sequence` — checked against it and refused if they differ. Use "-" or "" for a pure insertion. A VCF-style anchored pair (both alleles carrying a shar… |
| sequence | string | – | OFFLINE MODE. The reference/construct sequence the variant is described against (raw or FASTA). Mutually exclusive with "variant". |
| style | string | – | Mutagenic primer style: overlapping (QuikChange) or back-to-back (Q5/KLD). |
| targetCoreTm | number | – | Target Tm (°C) for the allele-specific genotyping core, before the universal tail (45-80; the core is chosen between 18 and 27 nt, so a target outside that range is refused rather than clamped). |
| variant | string | – | NETWORK MODE. A full HGVS "c." description, e.g. "NM_000546.6:c.215C>G" or "TP53:c.215C>G". Resolved through the bundled MANE crosswalk and a live Ensembl exon map, then a genomic window is fetched a… |
No output schema declared.
No examples provided.
vector_library_get Get a vector with its annotation ~165
Return one vector from the library: its GenBank accession and version, length, topology, organism/definition, complete sequence, and the full annotated feature table (type, label, 1-based inclusive start/end, strand, spliced length, and the location descriptor as the record wrote it). Accepts the library id, the vector name, or the accession. An unrecognized id is an error carrying the closest names — never an empty result.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Library id (e.g. "pbr322"), vector name ("pBR322"), or accession ("J01749" / "J01749.1"). |
| includeSequence | boolean | – | Set false for the annotation only — useful for a large BAC where the bases are not the point. |
No output schema declared.
No examples provided.
vector_library_search Search the vector library ~278
Browse a curated library of publicly deposited, feature-annotated cloning and expression vectors — by name, category (E. coli cloning/expression, yeast, mammalian, plant binary, BAC/fosmid, recombineering, phage/M13), length window, or annotated feature (e.g. 'T7 promoter', 'ori', 'AmpR'). Each hit reports the vector's accession, length, topology and feature count; vector_library_get returns the sequence and the full feature table. A curated public-record set, NOT a vendor catalog — see the gate's notChecked.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Restrict to one category. An unknown category is an error, not an empty result. |
| feature | string | – | Substring of an annotated feature's label, type or note (min 2 characters), e.g. "T7 promoter", "kanR", "rep_origin". |
| limit | integer | – | Maximum hits to return. Capped at 100; asking for more is an error, not a silent truncation. |
| maxLength | integer | – | Largest vector length in bp. |
| minLength | integer | – | Smallest vector length in bp. |
| query | string | – | Substring of the vector name or its GenBank definition (case- and punctuation-insensitive, min 2 characters). |
No output schema declared.
No examples provided.
verify_assembly Verify a full assembly recipe ~1,391
Deterministic self-check: given the same method/parts cloning_simulate would use (restriction-ligation, Gibson, Golden Gate, LIC, SLIC or In-Fusion/CPEC — 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. A recipe that can give more than one molecule is checked against ALL of them and `matchedCandidate` names the one the claim matched: a non-directional ligation really does put the insert in both ways round (half the plate carries each), a vector cut more than twice offers more than one backbone, and a Gibson junction whose fragments already share terminal sequence has two honest readings (one homology arm, or a tandem repeat present twice). See verify_construct for a narrower, insert-only check that doesn't require declaring the vector/enzymes/method.
| Name | Type | Req | Description |
|---|---|---|---|
| armTmTarget | number | – | Target annealing Tm (°C) for primer arms. |
| chewBackLen | integer | – | slic method: nucleotides removed from each 3′ end. A SLIC chew-back has no dNTP to arrest it and is stopped by time, so this is an input rather than a property of the sequence. 0 (default) models the… |
| circular | boolean | – | Treat the product/claimed construct as circular (most plasmids are). |
| claimedConstruct | string | yes | 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. |
| dephosphorylateVector | boolean | – | The linearized vector was CIP/rSAP-dephosphorylated (restriction method). Affects the self-ligation background warnings, not the product. |
| enzyme | string | – | Type IIS enzyme for Golden Gate — one of BsaI, BbsI, Esp3I (BsmBI); "BsmBI" also resolves to Esp3I, and NEB's variant names (BsaI-HFv2, BbsI-HF, BsmBI-v2) fold to the parent enzyme. Any other name fa… |
| enzyme3 | string | – | Insert 3′ enzyme (restriction method). |
| enzyme5 | string | – | Insert 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? (0-10), circular?} to derive that fragment inste… |
| fragments | array | – | Fragments (5′→3′), assembled head-to-tail (gibson/goldengate/slic/infusion). BARE parts only — for gibson do NOT include the homology arms, which are added by the assembly primers and merged (so the… |
| frameStart | integer | – | 1-based reading-frame start on claimedConstruct, used when coding is true. |
| homologyLen | integer | – | infusion method: terminal homology required at every junction, in bp. At least 15 — the junction is annealed and extended by a polymerase with no exonuclease to widen it and no ligase to seal it, so… |
| insert | string | – | Insert sequence (restriction and lic methods). Omit if insertPcr is given. |
| insertNucleotide | string | – | lic method: the single dNTP the INSERT's chew-back was run with. Normally the COMPLEMENT of vectorNucleotide (the classic pair is dTTP on the vector, dATP on the insert). |
| insertPcr | object | – | Derive the insert by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches? (0-10), circular?}. |
| mergePreAddedArms | boolean | – | Gibson only. When two fragments already share terminal sequence, count that share ONCE (the default — the fragments already carry their arm) or set false to concatenate it twice, which is the right r… |
| method | string | yes | Assembly method used. restriction/gibson/goldengate are the primer-and-enzyme methods; lic and slic re-run the T4-polymerase chew-back (sequence-defined and time-stopped respectively) and infusion is… |
| names | array | – | Optional labels for each fragment. |
| overlapLen | integer | – | Gibson homology-arm length (bp) that the assembly PRIMERS add at each junction. Since the fragments themselves must not carry their arms, this describes the junction/primer design only — it does not… |
| vector | string | – | Vector sequence (restriction and lic methods; for lic, the LINEARIZED vector). Omit if vectorPcr is given. |
| 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 verify heterologous-overhang cloning. |
| vectorNucleotide | string | – | lic method: the single dNTP the VECTOR's chew-back was run with (T for dTTP…). Required — T4 pol's exonuclease stops at the first occurrence of this base reading inward from each 3′ end, so there is… |
| vectorPcr | object | – | Derive the vector by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches? (0-10), circular?}. |
No output schema declared.
No examples provided.
verify_construct Verify a claimed construct ~389
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. Primers may carry a non-templated 5' tail (a restriction site, a Gibson arm, a tag): a construct missing ONLY tail bases still passes, since that is exactly what digesting a tailed amplicon removes before ligation — see match.templateCoveragePct and match.unalignedIsTailOnly, and note the pass does not establish that the right enzyme made the cut. This re-derives from the claim's own stated inputs; it does not review the claim's prose.
| Name | Type | Req | Description |
|---|---|---|---|
| claimedConstruct | string | yes | The final sequence claimed to have been built. |
| constructCircular | boolean | – | Treat claimedConstruct as a circular plasmid, so an insert that spans its arbitrary numbering origin is found whole. Without it the insert is looked for linearly and a wrapped one covers only its lon… |
| 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 | yes | Forward primer used to amplify the insert, 5'→3'. |
| insertReversePrimer | string | yes | Reverse primer used to amplify the insert, 5'→3'. |
| insertTemplate | string | yes | PCR template the insert was amplified from. |
| maxPrimerMismatches | integer | – | Mismatches tolerated per primer during PCR prediction (0–10). |
| templateCircular | boolean | – | Treat insertTemplate as circular (e.g. amplifying from a plasmid). |
No output schema declared.
No examples provided.
virtual_gel Virtual gel ~127
Predict restriction-digest fragment sizes and their gel migration positions against a chosen DNA ladder.
| Name | Type | Req | Description |
|---|---|---|---|
| circular | boolean | – | Treat the sequence as circular (plasmid). |
| enzymes | array | – | Enzyme names to digest with, from the curated common-enzyme set (see restriction_sites for the full list). An unrecognized name is rejected rather than skipped, so an empty band pattern always means… |
| ladder | string | – | DNA ladder to plot alongside the sample lane. |
| sequence | string | yes | Nucleotide sequence (raw or FASTA; IUPAC accepted). |
No output schema declared.
No examples provided.
volcano_plot_data Volcano plot data ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| rows | array | yes | Differential expression rows, one per gene. |
No output schema declared.
No examples provided.
web_search Search the web ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | number | – | Maximum number of results to return (default 5, max 10). |
| query | string | yes | The search query. |
No output schema declared.
No examples provided.
workflow Batch workflow (multi-tool pipeline) ~51
Run an ordered multi-tool pipeline over many records. One sequence value can be chained between steps.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | Multi-FASTA or one sequence/identifier per line. |
| steps | array | yes | – |
No output schema declared.
No examples provided.
What is the com.seqbench/workbench MCP server?
com.seqbench/workbench is an MCP server listed in the public MCP registry as com.seqbench/workbench. Hosted DNA/RNA/protein tools: primers, oligos, PCR, cloning, CRISPR, alignment, batch & pipelines. This page covers its hosted endpoint (https://seqbench.com/api/mcp).
Is the com.seqbench/workbench MCP server safe to use?
com.seqbench/workbench scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.seqbench/workbench MCP server expose?
com.seqbench/workbench exposes 130 tools: reverse_complement, gc_content, translate, find_orfs, format_sequence, and 125 more. Their descriptions and schemas cost roughly 43,273 tokens of context every time the server is loaded.
Does the com.seqbench/workbench MCP server require authentication?
No. We connected to com.seqbench/workbench without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the com.seqbench/workbench MCP server still maintained?
com.seqbench/workbench is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.