{"name":"SeqBench API","version":"1.1.0","docs":"https://seqbench.com/mcp","mcp":"https://seqbench.com/api/mcp","batch":{"endpoint":"/api/v1/batch","description":"Run one tool over many records (multi-FASTA or one sequence per line)."},"workflow":{"endpoint":"/api/v1/workflow","description":"Run a multi-tool pipeline over many records; each step chains into the next."},"toolCount":57,"tools":[{"name":"reverse_complement","title":"Reverse Complement","description":"Reverse, complement and reverse complement of a DNA or RNA sequence.","category":"Sequence","endpoint":"/api/v1/reverse_complement","batchable":true,"chainOutput":"reverseComplement","inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"type":{"type":"string","enum":["dna","rna"],"default":"dna"}},"required":["sequence"],"additionalProperties":false}},{"name":"gc_content","title":"GC Content","description":"GC content, AT content and per-base composition of a sequence.","category":"Sequence","endpoint":"/api/v1/gc_content","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."}},"required":["sequence"],"additionalProperties":false}},{"name":"translate","title":"Translate","description":"Translate a nucleotide sequence to protein (single frame or all six frames; standard code).","category":"Translation & ORFs","endpoint":"/api/v1/translate","batchable":true,"chainOutput":"protein","inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"frame":{"type":"integer","enum":[1,2,3],"default":1},"toStop":{"type":"boolean","default":false,"description":"Stop at the first stop codon."}},"required":["sequence"],"additionalProperties":false}},{"name":"find_orfs","title":"ORF Finder","description":"Find open reading frames (ATG…stop) across all six frames.","category":"Translation & ORFs","endpoint":"/api/v1/find_orfs","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"minAaLength":{"type":"integer","default":30,"description":"Minimum protein length (aa) to report."},"requireStop":{"type":"boolean","default":false,"description":"Only report ORFs terminated by a stop codon."}},"required":["sequence"],"additionalProperties":false}},{"name":"format_sequence","title":"Format Sequence","description":"Clean, case-fold, DNA↔RNA convert, reverse and line-wrap a sequence.","category":"Sequence","endpoint":"/api/v1/format_sequence","batchable":true,"chainOutput":"sequence","inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"stripNonLetters":{"type":"boolean","default":true,"description":"Remove digits, spaces and gaps (keep letters only)."},"caseMode":{"type":"string","enum":["keep","upper","lower"],"default":"keep"},"convert":{"type":"string","enum":["none","toRna","toDna"],"default":"none","description":"DNA→RNA (T→U) or RNA→DNA (U→T)."},"reverse":{"type":"boolean","default":false,"description":"Reverse the sequence (no complement)."},"width":{"type":"integer","default":60,"description":"Line-wrap width; 0 = single line."}},"required":["sequence"],"additionalProperties":false}},{"name":"motif_finder","title":"Motif Finder","description":"Find (overlapping) occurrences of an IUPAC motif on either strand, allowing mismatches.","category":"Sequence","endpoint":"/api/v1/motif_finder","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"motif":{"type":"string","description":"Query motif; IUPAC ambiguity codes (R Y S W K M B D H V N) allowed."},"searchReverseStrand":{"type":"boolean","default":true,"description":"Also search the reverse strand."},"maxMismatches":{"type":"integer","default":0,"description":"Maximum allowed mismatches per match."}},"required":["sequence","motif"],"additionalProperties":false}},{"name":"reverse_translate","title":"Reverse Translate","description":"Back-translate a protein to DNA (most-frequent codon per organism, or degenerate IUPAC consensus).","category":"Translation & ORFs","endpoint":"/api/v1/reverse_translate","batchable":true,"chainOutput":"dna","inputSchema":{"type":"object","properties":{"protein":{"type":"string","description":"Protein sequence (one-letter codes; * for stop)."},"mode":{"type":"string","enum":["frequent","degenerate"],"default":"frequent"},"organism":{"type":"string","enum":["ecoli","human","yeast","cho","pichia","insect","arabidopsis","zebrafish"],"default":"ecoli","description":"Codon-usage host (ignored in degenerate mode)."}},"required":["protein"],"additionalProperties":false}},{"name":"random_sequence","title":"Random Sequence","description":"Generate a random DNA, RNA or protein sequence, optionally with a target GC content.","category":"Sequence","endpoint":"/api/v1/random_sequence","batchable":false,"chainOutput":"sequence","inputSchema":{"type":"object","properties":{"kind":{"type":"string","enum":["dna","rna","protein"],"default":"dna"},"length":{"type":"integer","default":100,"description":"Number of residues to generate."},"gcContent":{"type":"number","description":"Target GC percentage 0..100 (dna/rna only); omit for uniform."}},"required":["length"],"additionalProperties":false}},{"name":"melting_temperature","title":"Primer Tm calculator","description":"Primer/oligo melting temperature: nearest-neighbour (SantaLucia 1998) plus Wallace and salt-adjusted estimates, with the length-appropriate recommendation and molecular weights.","category":"Primers & oligos","endpoint":"/api/v1/melting_temperature","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"oligoNM":{"type":"number","default":250,"description":"Total strand concentration (nM)."},"naMM":{"type":"number","default":50,"description":"Monovalent cation [Na+]/[K+] (mM)."},"mgMM":{"type":"number","default":1.5,"description":"Divalent cation [Mg2+] (mM)."},"dntpMM":{"type":"number","default":0.2,"description":"Total [dNTP] (mM), chelates Mg2+."},"targetTm":{"type":"number","description":"Optional target Tm (°C). When given, the response includes a pass/fail gate."},"tmTolerance":{"type":"number","default":2,"description":"Allowed +/- window (°C) around targetTm for the gate."}},"required":["sequence"],"additionalProperties":false}},{"name":"oligo_analysis","title":"Oligo analyzer","description":"Full oligo analysis: nearest-neighbour Tm/ΔG/ΔH/ΔS plus hairpin and self-dimer screening with base-pair diagrams and warnings.","category":"Primers & oligos","endpoint":"/api/v1/oligo_analysis","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"oligoNM":{"type":"number","default":250,"description":"Total strand concentration (nM)."},"naMM":{"type":"number","default":50,"description":"Monovalent cation [Na+]/[K+] (mM)."},"mgMM":{"type":"number","default":1.5,"description":"Divalent cation [Mg2+] (mM)."},"dntpMM":{"type":"number","default":0.2,"description":"Total [dNTP] (mM), chelates Mg2+."}},"required":["sequence"],"additionalProperties":false}},{"name":"in_silico_pcr","title":"In-silico PCR","description":"Predict PCR products for a template and a pair of primers (IUPAC-aware, allows mismatches, handles circular templates).","category":"Primers & oligos","endpoint":"/api/v1/in_silico_pcr","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"template":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"forwardPrimer":{"type":"string","description":"Primer 1, 5'→3'."},"reversePrimer":{"type":"string","description":"Primer 2, 5'→3' (order does not matter)."},"maxMismatches":{"type":"integer","default":0,"description":"Mismatches tolerated per primer."},"circular":{"type":"boolean","default":false,"description":"Treat the template as circular (plasmid)."}},"required":["template","forwardPrimer","reversePrimer"],"additionalProperties":false}},{"name":"primer_design","title":"Primer designer","description":"De-novo PCR primer design (Primer3-style penalty picker): enumerate and score candidate primer pairs against length/Tm/GC/3'-clamp/structure constraints.","category":"Primers & oligos","endpoint":"/api/v1/primer_design","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"template":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"lenMin":{"type":"integer","default":18},"lenOpt":{"type":"integer","default":20},"lenMax":{"type":"integer","default":25},"tmMin":{"type":"number","default":57},"tmOpt":{"type":"number","default":60},"tmMax":{"type":"number","default":63},"tmMaxDiff":{"type":"number","default":3,"description":"Max Tm difference within a pair (°C)."},"gcMin":{"type":"number","default":40},"gcMax":{"type":"number","default":60},"ampliconMin":{"type":"integer","default":100},"ampliconMax":{"type":"integer","default":1000},"targetStart":{"type":"integer","description":"1-based inclusive start of a region the product must span (optional)."},"targetEnd":{"type":"integer","description":"1-based inclusive end of the target region (optional)."},"maxReturn":{"type":"integer","default":5,"description":"Number of best pairs to return."},"oligoNM":{"type":"number","default":250,"description":"Total strand concentration (nM)."},"naMM":{"type":"number","default":50,"description":"Monovalent cation [Na+]/[K+] (mM)."},"mgMM":{"type":"number","default":1.5,"description":"Divalent cation [Mg2+] (mM)."},"dntpMM":{"type":"number","default":0.2,"description":"Total [dNTP] (mM), chelates Mg2+."}},"required":["template"],"additionalProperties":false}},{"name":"dna_molarity","title":"DNA molarity calculator","description":"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.","category":"Primers & oligos","endpoint":"/api/v1/dna_molarity","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["dsDNA","ssDNA","ssRNA"],"default":"dsDNA","description":"Molecule type."},"length":{"type":"integer","default":1000,"description":"Length in bp (dsDNA) or nt (ssDNA/ssRNA). Ignored when a sequence is given."},"massNg":{"type":"number","default":100,"description":"Mass in nanograms."},"volumeUl":{"type":"number","default":0,"description":"Volume in microlitres (0 = unknown; needed for concentration)."},"sequence":{"type":"string","description":"Optional sequence — overrides length and gives an exact molar mass from base composition."}},"required":[],"additionalProperties":false}},{"name":"site_directed_mutagenesis","title":"Site-directed mutagenesis designer","description":"Design site-directed mutagenesis primers (QuikChange overlapping or Q5 back-to-back) for a nucleotide substitution or an amino-acid codon swap.","category":"Primers & oligos","endpoint":"/api/v1/site_directed_mutagenesis","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"template":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"editKind":{"type":"string","enum":["nt","aa"],"default":"aa","description":"Edit at the nucleotide or amino-acid level."},"style":{"type":"string","enum":["quikchange","q5"],"default":"quikchange","description":"Mutagenic primer style."},"armTmTarget":{"type":"number","default":60,"description":"Target Tm (°C) for each template-binding arm."},"position":{"type":"integer","description":"1-based position to substitute (editKind='nt')."},"newBase":{"type":"string","enum":["A","C","G","T"],"description":"Replacement base (editKind='nt')."},"frameStart":{"type":"integer","default":1,"description":"1-based position of the first base of codon 1 (editKind='aa')."},"residue":{"type":"integer","description":"1-based residue number to change (editKind='aa')."},"targetAa":{"type":"string","description":"Target amino acid, one-letter code incl '*' (editKind='aa')."},"organism":{"type":"string","enum":["ecoli","human","yeast","cho","pichia","insect","arabidopsis","zebrafish"],"default":"ecoli","description":"Codon-usage table for choosing the new codon (editKind='aa')."},"oligoNM":{"type":"number","default":250,"description":"Total strand concentration (nM)."},"naMM":{"type":"number","default":50,"description":"Monovalent cation [Na+]/[K+] (mM)."},"mgMM":{"type":"number","default":1.5,"description":"Divalent cation [Mg2+] (mM)."},"dntpMM":{"type":"number","default":0.2,"description":"Total [dNTP] (mM), chelates Mg2+."}},"required":["template"],"additionalProperties":false}},{"name":"cross_dimer","title":"Cross-Dimer","description":"Screen two oligos for the most stable heterodimer (cross-dimer) between them.","category":"Primers & oligos","endpoint":"/api/v1/cross_dimer","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequenceA":{"type":"string","description":"First oligo (5'→3')."},"sequenceB":{"type":"string","description":"Second oligo (5'→3')."}},"required":["sequenceA","sequenceB"],"additionalProperties":false}},{"name":"primer_specificity","title":"Primer specificity screen","description":"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.","category":"Primers & oligos","endpoint":"/api/v1/primer_specificity","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"forwardPrimer":{"type":"string","description":"Forward primer, 5'→3'."},"reversePrimer":{"type":"string","description":"Reverse primer, 5'→3'."},"maxMismatches":{"type":"integer","default":1,"description":"Mismatches tolerated per primer against a reference genome."},"maxProductLength":{"type":"integer","default":5000,"description":"Ignore candidate off-target products longer than this (bp) — a search-window cap, not a biological claim."}},"required":["forwardPrimer","reversePrimer"],"additionalProperties":false}},{"name":"restriction_sites","title":"Restriction sites","description":"Find restriction enzyme recognition sites in a DNA sequence.","category":"Enzymes & cloning","endpoint":"/api/v1/restriction_sites","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"enzymes":{"type":"array","items":{"type":"string"},"description":"Enzyme names to scan; omit to scan all curated enzymes."}},"required":["sequence"],"additionalProperties":false}},{"name":"double_digest","title":"Double digest buffer","description":"Recommend a single NEB buffer (and flag caveats) for digesting with two enzymes in one tube.","category":"Enzymes & cloning","endpoint":"/api/v1/double_digest","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"enzymeA":{"type":"string","description":"First enzyme name (e.g. EcoRI)."},"enzymeB":{"type":"string","description":"Second enzyme name (e.g. BamHI)."}},"required":["enzymeA","enzymeB"],"additionalProperties":false}},{"name":"cloning_simulate","title":"Cloning simulator","description":"Assemble fragments by Gibson/overlap, Golden Gate (Type IIS) or restriction–ligation, returning the product and junction primers.","category":"Enzymes & cloning","endpoint":"/api/v1/cloning_simulate","batchable":false,"chainOutput":"product","inputSchema":{"type":"object","properties":{"method":{"type":"string","enum":["gibson","goldengate","restriction"],"default":"gibson","description":"Assembly method."},"fragments":{"type":"array","items":{"type":"string"},"description":"Fragments (5′→3′), assembled head-to-tail. Used by gibson/goldengate."},"names":{"type":"array","items":{"type":"string"},"description":"Optional labels for each fragment."},"circular":{"type":"boolean","default":true,"description":"Produce a circular product."},"overlapLen":{"type":"integer","default":20,"description":"Gibson homology-arm length (bp)."},"armTmTarget":{"type":"number","default":60,"description":"Target annealing Tm (°C) for primer arms."},"enzyme":{"type":"string","default":"BsaI","description":"Type IIS enzyme for Golden Gate (e.g. BsaI, BbsI, Esp3I (BsmBI))."},"vector":{"type":"string","description":"Vector sequence (restriction method)."},"insert":{"type":"string","description":"Insert sequence (restriction method)."},"enzyme5":{"type":"string","default":"EcoRI","description":"5′ enzyme (restriction method)."},"enzyme3":{"type":"string","default":"BamHI","description":"3′ enzyme (restriction method)."}},"required":["method"],"additionalProperties":false}},{"name":"plasmid_annotate","title":"Plasmid annotator","description":"Auto-detect common cloning features (promoters, tags, origins, resistance markers, MCS, primers) on both strands.","category":"Enzymes & cloning","endpoint":"/api/v1/plasmid_annotate","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."}},"required":["sequence"],"additionalProperties":false}},{"name":"construct_qc","title":"Construct QC linter","description":"Lint a coding DNA sequence for premature stops, internal RBS/polyA motifs, unwanted restriction sites, GC extremes and repeats.","category":"Enzymes & cloning","endpoint":"/api/v1/construct_qc","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"frameStart":{"type":"integer","default":1,"description":"1-based nucleotide where the reading frame begins."},"avoidEnzymes":{"type":"array","items":{"type":"string"},"description":"Enzyme names whose internal sites should be flagged as errors."},"gcWindow":{"type":"integer","default":50,"description":"Sliding-window size (nt) for GC-extreme scanning."},"gcLow":{"type":"number","default":30,"description":"GC% below this flags an AT-rich window."},"gcHigh":{"type":"number","default":70,"description":"GC% above this flags a GC-rich window."},"homopolymerMin":{"type":"integer","default":8,"description":"Minimum run length to flag a homopolymer."},"crypticOrfMinAa":{"type":"integer","default":20,"description":"Minimum peptide length (aa) for a hidden alternate-frame ORF to be flagged."}},"required":["sequence"],"additionalProperties":false}},{"name":"construct_autofix","title":"Construct auto-fix (domestication)","description":"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.","category":"Enzymes & cloning","endpoint":"/api/v1/construct_autofix","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"organism":{"type":"string","enum":["ecoli","human","yeast","cho","pichia","insect","arabidopsis","zebrafish"],"default":"ecoli","description":"Codon-usage table to prefer among synonymous options."},"frameStart":{"type":"integer","default":1,"description":"1-based nucleotide where the reading frame begins."},"avoidEnzymes":{"type":"array","items":{"type":"string"},"description":"Enzyme names whose internal sites should be removed (e.g. [\"BsaI\",\"BsmBI\"] for Golden Gate domestication)."},"gcWindow":{"type":"integer","default":50},"gcLow":{"type":"number","default":30},"gcHigh":{"type":"number","default":70},"homopolymerMin":{"type":"integer","default":8},"crypticOrfMinAa":{"type":"integer","default":20,"description":"Minimum peptide length (aa) for a hidden alternate-frame ORF to be flagged."},"maxPasses":{"type":"integer","default":3,"description":"Repeat full passes until clean or no further progress."}},"required":["sequence"],"additionalProperties":false}},{"name":"virtual_gel","title":"Virtual gel","description":"Predict restriction-digest fragment sizes and their gel migration positions against a chosen DNA ladder.","category":"Enzymes & cloning","endpoint":"/api/v1/virtual_gel","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"enzymes":{"type":"array","items":{"type":"string"},"description":"Enzyme names to digest with."},"circular":{"type":"boolean","default":false,"description":"Treat the sequence as circular (plasmid)."},"ladder":{"type":"string","enum":["1 kb","1 kb Plus","100 bp"],"default":"1 kb","description":"DNA ladder to plot alongside the sample lane."}},"required":["sequence"],"additionalProperties":false}},{"name":"protein_properties","title":"Protein Properties","description":"Protein properties: molecular weight, isoelectric point, GRAVY, extinction coefficient and composition.","category":"Proteins & peptides","endpoint":"/api/v1/protein_properties","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Protein sequence (one-letter amino-acid codes; non-AA characters ignored)."},"chargeStep":{"type":"number","default":0.25,"description":"pH step for the net-charge titration curve (0–14)."}},"required":["sequence"],"additionalProperties":false}},{"name":"protein_hydrophobicity","title":"Hydrophobicity Profile","description":"Sliding-window hydropathy/hydrophobicity profile (ProtScale-style) over a published amino-acid scale.","category":"Proteins & peptides","endpoint":"/api/v1/protein_hydrophobicity","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Protein sequence (one-letter amino-acid codes; non-AA characters ignored)."},"scale":{"type":"string","enum":["Kyte-Doolittle","Hopp-Woods","Eisenberg"],"default":"Kyte-Doolittle","description":"Amino-acid scale. Kyte-Doolittle and Eisenberg are hydrophobicity; Hopp-Woods is hydrophilicity."},"window":{"type":"integer","default":9,"description":"Sliding-window size (clamped to an odd number ≥ 1)."}},"required":["sequence"],"additionalProperties":false}},{"name":"protease_digestion","title":"Protease Digestion","description":"In-silico protease/chemical digestion: cleave a protein and report each peptide's position, length and neutral mass.","category":"Proteins & peptides","endpoint":"/api/v1/protease_digestion","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Protein sequence (one-letter amino-acid codes; non-AA characters ignored)."},"protease":{"type":"string","enum":["trypsin","lysc","argc","chymotrypsin","gluc","aspn","cnbr"],"default":"trypsin","description":"Protease or chemical cleavage agent."},"missedCleavages":{"type":"integer","enum":[0,1,2],"default":0,"description":"Allowed missed internal cleavages (0–2)."},"minMass":{"type":"number","description":"Optional lower bound on neutral monoisotopic mass (Da)."},"maxMass":{"type":"number","description":"Optional upper bound on neutral monoisotopic mass (Da)."},"maxPeptides":{"type":"integer","default":2000,"description":"Cap on the number of returned peptides."}},"required":["sequence"],"additionalProperties":false}},{"name":"codon_optimize","title":"Codon optimiser","description":"Codon-optimise a protein (or coding DNA) for an expression host by picking the most-frequent codon per residue.","category":"Codon usage","endpoint":"/api/v1/codon_optimize","batchable":true,"chainOutput":"dna","inputSchema":{"type":"object","properties":{"protein":{"type":"string","description":"Protein sequence (one-letter codes). Coding DNA/RNA is accepted and translated (frame +1) first."},"organism":{"type":"string","enum":["ecoli","human","yeast","cho","pichia","insect","arabidopsis","zebrafish"],"default":"ecoli"}},"required":["protein"],"additionalProperties":false}},{"name":"codon_adaptation_index","title":"CAI analyser","description":"Codon Adaptation Index (CAI) and per-codon relative adaptiveness of a CDS against an expression host, with rare-codon and GC3 analysis.","category":"Codon usage","endpoint":"/api/v1/codon_adaptation_index","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Coding sequence (DNA/RNA; should start in-frame at ATG)."},"organism":{"type":"string","enum":["ecoli","human","yeast","cho","pichia","insect","arabidopsis","zebrafish"],"default":"ecoli"},"frameStart":{"type":"integer","default":1,"description":"1-based position to start reading codons."},"rareThreshold":{"type":"number","default":0.1,"description":"Relative adaptiveness (w) below this flags a codon as rare."}},"required":["sequence"],"additionalProperties":false}},{"name":"pairwise_alignment","title":"Pairwise Alignment","description":"Global (Needleman-Wunsch) or local (Smith-Waterman) pairwise alignment of two sequences with match/mismatch/gap scoring.","category":"Alignment & variants","endpoint":"/api/v1/pairwise_alignment","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"seqA":{"type":"string","description":"First sequence (raw or FASTA; nucleotide or protein)."},"seqB":{"type":"string","description":"Second sequence (raw or FASTA; nucleotide or protein)."},"mode":{"type":"string","enum":["global","local"],"default":"global"},"match":{"type":"number","default":1,"description":"Match score."},"mismatch":{"type":"number","default":-1,"description":"Mismatch penalty."},"gap":{"type":"number","default":-2,"description":"Linear gap penalty (per gap position)."}},"required":["seqA","seqB"],"additionalProperties":false}},{"name":"multiple_sequence_alignment","title":"Multiple Sequence Alignment","description":"Center-star multiple sequence alignment of a multi-FASTA input, with consensus and per-column conservation.","category":"Alignment & variants","endpoint":"/api/v1/multiple_sequence_alignment","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"input":{"type":"string","description":"Two or more sequences in multi-FASTA format (>name / sequence). Up to 25 are aligned."}},"required":["input"],"additionalProperties":false}},{"name":"variant_comparator","title":"Variant Comparator","description":"Align a query to a reference and call variants (substitutions, insertions, deletions) in HGVS g. notation, with optional coding effects.","category":"Alignment & variants","endpoint":"/api/v1/variant_comparator","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"reference":{"type":"string","description":"Reference / wild-type sequence (raw or FASTA)."},"query":{"type":"string","description":"Query / variant sequence (raw or FASTA)."},"coding":{"type":"boolean","default":false,"description":"Treat as a coding sequence and report amino-acid effects."},"frameStart":{"type":"integer","default":1,"description":"1-based reading-frame start (used when coding is true)."}},"required":["reference","query"],"additionalProperties":false}},{"name":"crispr_grna_design","title":"CRISPR gRNA designer","description":"Find and score candidate guide RNAs (protospacer + PAM) in a target DNA for common nucleases (SpCas9, SpCas9-NG, SaCas9, Cas12a).","category":"CRISPR","endpoint":"/api/v1/crispr_grna_design","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"nuclease":{"type":"string","enum":["spcas9","spcas9ng","sacas9","cas12a"],"default":"spcas9","description":"Nuclease id. Omit to just list the available nucleases (no scan is performed)."},"searchReverseStrand":{"type":"boolean","default":true,"description":"Also scan the reverse strand for guides."},"minScore":{"type":"number","default":0,"description":"Only return guides with a heuristic score at least this high (0–100)."}},"required":["sequence"],"additionalProperties":false}},{"name":"crispr_offtarget_check","title":"CRISPR guide off-target check","description":"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.","category":"CRISPR","endpoint":"/api/v1/crispr_offtarget_check","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"protospacer":{"type":"string","description":"The guide's protospacer sequence, 5'→3' (no PAM)."},"nuclease":{"type":"string","enum":["spcas9","spcas9ng","sacas9","cas12a"],"default":"spcas9","description":"Nuclease id — determines the PAM pattern/side required at each candidate site."},"maxMismatches":{"type":"integer","default":2,"description":"Mismatches tolerated between the protospacer and a candidate genomic site."}},"required":["protospacer"],"additionalProperties":false}},{"name":"crispr_hdr_donor","title":"HDR donor designer","description":"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.","category":"CRISPR","endpoint":"/api/v1/crispr_hdr_donor","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"targetSequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"editStart":{"type":"integer","description":"1-based start of the region being replaced. Omit to derive from guideStart/guideEnd/guideStrand instead."},"editEnd":{"type":"integer","description":"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."},"guideStart":{"type":"integer","description":"1-based forward-strand start of the guide's protospacer (alternative to editStart/editEnd, for an insertion exactly at the cut site)."},"guideEnd":{"type":"integer","description":"1-based forward-strand end of the guide's protospacer."},"guideStrand":{"type":"string","enum":["+","-"],"description":"Strand the guide's protospacer is on."},"nuclease":{"type":"string","enum":["spcas9","spcas9ng","sacas9","cas12a"],"default":"spcas9","description":"Needed only when deriving the cut site from guideStart/guideEnd/guideStrand."},"replacement":{"type":"string","default":"","description":"Sequence to insert/substitute (\"\" for a pure deletion)."},"armLength":{"type":"integer","default":500,"description":"Homology arm length (bp) on each side. Use ~30–60 for an ssODN donor, ~500–1000 for a dsDNA donor plasmid."},"designGenotypingPrimers":{"type":"boolean","default":true,"description":"Also design a primer pair (on the original targetSequence) whose product spans the edit site."}},"required":["targetSequence","replacement"],"additionalProperties":false}},{"name":"parse_genbank","title":"GenBank Parser","description":"Parse a GenBank flat file into its locus, definition, features and sequence.","category":"Files & formats","endpoint":"/api/v1/parse_genbank","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"A GenBank flat file (LOCUS … FEATURES … ORIGIN … //)."}},"required":["text"],"additionalProperties":false}},{"name":"sequence_format_convert","title":"Sequence Format Converter","description":"Convert between FASTA and GenBank (whole sequence, CDS or protein), or export to TSV.","category":"Files & formats","endpoint":"/api/v1/sequence_format_convert","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"input":{"type":"string","description":"A FASTA or GenBank record to convert."},"from":{"type":"string","enum":["auto","fasta","genbank"],"default":"auto","description":"Input format; 'auto' sniffs it from the first meaningful line."},"to":{"type":"string","enum":["fasta","fasta-cds","fasta-protein","genbank","tsv"],"default":"fasta","description":"Output format. fasta-cds / fasta-protein extract CDS features (GenBank input only)."}},"required":["input"],"additionalProperties":false}},{"name":"seqfile_stats","title":"FASTA/FASTQ Stats","description":"Statistics for a FASTA or FASTQ file: count, length distribution, N50, GC content and (FASTQ) mean quality.","category":"Files & formats","endpoint":"/api/v1/seqfile_stats","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"input":{"type":"string","description":"FASTA or FASTQ text (raw sequence is treated as single-record FASTA)."},"qualityOffset":{"type":"integer","enum":[33,64],"default":33,"description":"FASTQ Phred ASCII offset (33 = Sanger/Illumina 1.8+, 64 = Illumina 1.3–1.7)."}},"required":["input"],"additionalProperties":false}},{"name":"parse_sanger_trace","title":"Sanger Trace Parser","description":"Decode a Sanger ABIF (.ab1 / .abi) chromatogram: base calls, per-base quality, the four dye-channel traces and peak locations.","category":"Files & formats","endpoint":"/api/v1/parse_sanger_trace","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"fileBase64":{"type":"string","description":"The binary ABIF (.ab1 / .abi) trace file, base64-encoded."},"fileName":{"type":"string","description":"Optional original file name (echoed back)."}},"required":["fileBase64"],"additionalProperties":false}},{"name":"sanger_vs_reference","title":"Sanger vs Reference","description":"Align a Sanger ABIF read to a reference and report identity plus every mismatch, insertion and deletion.","category":"Files & formats","endpoint":"/api/v1/sanger_vs_reference","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"fileBase64":{"type":"string","description":"The binary ABIF (.ab1 / .abi) trace file, base64-encoded."},"read":{"type":"string","description":"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":{"type":"string","description":"Expected reference sequence (FASTA or raw)."},"fileName":{"type":"string","description":"Optional original file name (echoed back)."},"minCoverage":{"type":"number","default":0.9,"description":"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 the region/junction being checked."}},"required":["reference"],"additionalProperties":false}},{"name":"characterize_sequence","title":"Characterize sequence","description":"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.","category":"Analysis","endpoint":"/api/v1/characterize_sequence","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"minOrfAa":{"type":"integer","default":40,"description":"Minimum ORF length in amino acids (nucleotide input only)."},"maxOrfs":{"type":"integer","default":8,"description":"Maximum number of ORFs to return, longest first."},"endPrimerLength":{"type":"integer","default":20,"description":"Length of the naive end primers taken from each end."}},"required":["sequence"],"additionalProperties":false}},{"name":"sequence_report","title":"Sequence report","description":"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.","category":"Analysis","endpoint":"/api/v1/sequence_report","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"minOrfAa":{"type":"integer","default":50,"description":"Minimum ORF length in amino acids."},"maxOrfs":{"type":"integer","default":10,"description":"Maximum number of ORFs to return, longest first."},"endPrimerLength":{"type":"integer","default":20,"description":"Length of the naive end primers taken from each end."}},"required":["sequence"],"additionalProperties":false}},{"name":"session_create","title":"Create a design session","description":"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.","category":"Analysis","endpoint":"/api/v1/session_create","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"entries":{"type":"object","additionalProperties":{"type":"string"},"description":"Initial named entries, e.g. {\"vector\": \"...\", \"insert\": \"...\"}. Optional — you can also add entries later with session_set."}},"required":[],"additionalProperties":false}},{"name":"session_get","title":"Read a design session","description":"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.","category":"Analysis","endpoint":"/api/v1/session_get","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sessionId":{"type":"string"},"names":{"type":"array","items":{"type":"string"},"description":"Only return these entries; omit to return all of them."}},"required":["sessionId"],"additionalProperties":false}},{"name":"session_set","title":"Write to a design session","description":"Add or overwrite named entries in an existing session.","category":"Analysis","endpoint":"/api/v1/session_set","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sessionId":{"type":"string"},"entries":{"type":"object","additionalProperties":{"type":"string"},"description":"Named entries to add/overwrite, e.g. {\"insert\": \"...\"}."}},"required":["sessionId","entries"],"additionalProperties":false}},{"name":"session_run","title":"Run a tool using session entries","description":"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.","category":"Analysis","endpoint":"/api/v1/session_run","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sessionId":{"type":"string"},"tool":{"type":"string","description":"Name of any non-meta SeqBench tool (not batch, workflow, or another session_* tool)."},"fromSession":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of { toolArgName: sessionEntryName } — resolves each named tool argument from the session before running."},"args":{"type":"object","additionalProperties":true,"description":"Additional literal arguments, merged with the ones resolved from the session."},"writeBack":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of { resultFieldName: sessionEntryName } — stores selected fields of the result back into the session under these names."}},"required":["sessionId","tool"],"additionalProperties":false}},{"name":"sequence_fetch","title":"Fetch sequence by accession","description":"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.","category":"Files & formats","endpoint":"/api/v1/sequence_fetch","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"accession":{"type":"string","description":"GenBank/RefSeq accession (e.g. NM_000546), UniProtKB accession (e.g. P04637), or Ensembl stable ID (e.g. ENSG00000141510, ENST00000335137)."},"db":{"type":"string","enum":["auto","nucleotide","protein","uniprot","ensembl"],"default":"auto","description":"Database to query; auto-detects from the accession format."},"format":{"type":"string","enum":["fasta","genbank"],"default":"fasta","description":"Output format (GenBank is only available for NCBI accessions — UniProt and Ensembl are FASTA-only)."}},"required":["accession"],"additionalProperties":false}},{"name":"sequence_search","title":"Search sequence databases by name","description":"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.","category":"Files & formats","endpoint":"/api/v1/sequence_search","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"gene":{"type":"string","description":"Gene symbol/name, e.g. \"BRCA1\". Combined with organism (if given) into a search term."},"organism":{"type":"string","description":"Organism name, e.g. \"Homo sapiens\". Optional; narrows the gene search."},"term":{"type":"string","description":"Raw NCBI search term (advanced) — overrides gene/organism when given, e.g. \"BRCA1[gene] AND Homo sapiens[orgn]\"."},"db":{"type":"string","enum":["nucleotide","protein"],"default":"nucleotide"},"maxResults":{"type":"integer","default":5,"description":"Up to 20."}},"required":[],"additionalProperties":false}},{"name":"protein_annotate_submit","title":"Submit a protein for domain/GO annotation","description":"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.","category":"Proteins & peptides","endpoint":"/api/v1/protein_annotate_submit","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Protein sequence, one-letter code (FASTA header, if any, is stripped)."},"appl":{"type":"string","description":"Restrict to one member database (e.g. \"PfamA\"); omit to run EBI's defaults across all of them."},"goterms":{"type":"boolean","default":true,"description":"Include GO-term cross-references."}},"required":["sequence"],"additionalProperties":false}},{"name":"protein_annotate_poll","title":"Poll a protein annotation job","description":"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.","category":"Proteins & peptides","endpoint":"/api/v1/protein_annotate_poll","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"],"additionalProperties":false}},{"name":"plasmid_identify","title":"Identify an unknown plasmid","description":"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.","category":"Enzymes & cloning","endpoint":"/api/v1/plasmid_identify","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"circular":{"type":"boolean","default":true,"description":"Treat the query as a circular molecule (most plasmids are)."},"topN":{"type":"integer","default":5,"description":"How many top-ranked backbone candidates to report."}},"required":["sequence"],"additionalProperties":false}},{"name":"plasmid_full_report","title":"Plasmid full report (identity + features + unexplained regions)","description":"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.","category":"Enzymes & cloning","endpoint":"/api/v1/plasmid_full_report","batchable":true,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"circular":{"type":"boolean","default":true,"description":"Treat the query as a circular molecule (most plasmids are)."},"topN":{"type":"integer","default":5,"description":"How many top-ranked backbone candidates to report."}},"required":["sequence"],"additionalProperties":false}},{"name":"plasmid_deep_annotate","title":"Deep plasmid annotation (pLannotate)","description":"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.","category":"Enzymes & cloning","endpoint":"/api/v1/plasmid_deep_annotate","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"sequence":{"type":"string","description":"Nucleotide sequence (raw or FASTA; IUPAC accepted)."},"circular":{"type":"boolean","default":true,"description":"Treat the sequence as a circular plasmid (vs. linear)."}},"required":["sequence"],"additionalProperties":false}},{"name":"verify_construct","title":"Verify a claimed construct","description":"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.","category":"Enzymes & cloning","endpoint":"/api/v1/verify_construct","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"claimedConstruct":{"type":"string","description":"The final sequence claimed to have been built."},"insertTemplate":{"type":"string","description":"PCR template the insert was amplified from."},"insertForwardPrimer":{"type":"string","description":"Forward primer used to amplify the insert, 5'→3'."},"insertReversePrimer":{"type":"string","description":"Reverse primer used to amplify the insert, 5'→3'."},"templateCircular":{"type":"boolean","default":false,"description":"Treat insertTemplate as circular (e.g. amplifying from a plasmid)."},"maxPrimerMismatches":{"type":"integer","default":0,"description":"Mismatches tolerated per primer during PCR prediction."},"expectedFrameStart":{"type":"integer","description":"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."}},"required":["claimedConstruct","insertTemplate","insertForwardPrimer","insertReversePrimer"],"additionalProperties":false}},{"name":"verify_assembly","title":"Verify a full assembly recipe","description":"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.","category":"Enzymes & cloning","endpoint":"/api/v1/verify_assembly","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"method":{"type":"string","enum":["restriction","gibson","goldengate"],"description":"Assembly method used."},"claimedConstruct":{"type":"string","description":"The sequence you claim you ended up with."},"circular":{"type":"boolean","default":true,"description":"Treat the product/claimed construct as circular (most plasmids are)."},"coding":{"type":"boolean","default":false,"description":"Report amino-acid effects of any mismatch, assuming claimedConstruct is (or contains) a coding sequence."},"frameStart":{"type":"integer","default":1,"description":"1-based reading-frame start on claimedConstruct, used when coding is true."},"vector":{"type":"string","description":"Vector sequence (restriction method). Omit if vectorPcr is given."},"vectorPcr":{"type":"object","description":"Derive the vector by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches?, circular?}."},"insert":{"type":"string","description":"Insert sequence (restriction method). Omit if insertPcr is given."},"insertPcr":{"type":"object","description":"Derive the insert by PCR instead: {template, forwardPrimer, reversePrimer, maxMismatches?, circular?}."},"enzyme5":{"type":"string","default":"EcoRI","description":"5′ enzyme (restriction method)."},"enzyme3":{"type":"string","default":"BamHI","description":"3′ enzyme (restriction method)."},"fragments":{"type":"array","items":{"type":"string"},"description":"Fragments (5′→3′), assembled head-to-tail (gibson/goldengate). Use \"\" as a placeholder for any fragment supplied instead via the matching fragmentPcrs[i]."},"fragmentPcrs":{"type":"array","items":{"type":"object"},"description":"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."},"names":{"type":"array","items":{"type":"string"},"description":"Optional labels for each fragment."},"overlapLen":{"type":"integer","default":20,"description":"Gibson homology-arm length (bp)."},"armTmTarget":{"type":"number","default":60,"description":"Target annealing Tm (°C) for primer arms."},"enzyme":{"type":"string","default":"BsaI","description":"Type IIS enzyme for Golden Gate."}},"required":["method","claimedConstruct"],"additionalProperties":false}},{"name":"golden_gate_fidelity","title":"Golden Gate overhang fidelity","description":"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).","category":"Enzymes & cloning","endpoint":"/api/v1/golden_gate_fidelity","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"overhangs":{"type":"array","items":{"type":"string"},"description":"The candidate 4-base overhangs for one assembly (e.g. [\"GGAG\",\"TACT\",\"AATG\"]). At least 2, no duplicates."},"dataset":{"type":"string","enum":["generic-t4-37c-1h","bsai-hfv2"],"default":"generic-t4-37c-1h","description":"Which real ligation dataset to score against — generic T4 ligase, or an enzyme-specific one-pot dataset if that matches your actual digestion enzyme."},"riskThreshold":{"type":"number","default":0.05,"description":"Flag a pair as risky when the cross-reaction is at least this fraction of that pair's own total signal."},"compareToNamedSet":{"type":"string","enum":["pryor-2020-plant-11","pryor-2020-20set","cidar-moclo"],"description":"Also score this published reference set (see namedSetsAvailable in the output) alongside your candidate set, for comparison."}},"required":["overhangs"],"additionalProperties":false}},{"name":"save_permalink","title":"Save a permanent shareable link","description":"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}) — no account, no expiry. Use this to cite or share a specific result (e.g. a verify_construct or verify_assembly check) rather than re-pasting it.","category":"Analysis","endpoint":"/api/v1/save_permalink","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"tool":{"type":"string","description":"Name of the registered tool to run and save (e.g. \"verify_construct\")."},"args":{"type":"object","description":"Arguments for that tool, exactly as you would pass to it directly."}},"required":["tool","args"],"additionalProperties":false}},{"name":"sequencing_readback_verify","title":"Sequencing read-back verification","description":"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. 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.","category":"Files & formats","endpoint":"/api/v1/sequencing_readback_verify","batchable":false,"chainOutput":null,"inputSchema":{"type":"object","properties":{"reference":{"type":"string","description":"The claimed/expected reference sequence."},"reads":{"type":"string","description":"Raw reads in FASTA or FASTQ format (auto-detected). Up to 2000 reads / 5,000,000 total bp per call."},"minSupportingReads":{"type":"integer","default":2,"description":"Minimum number of reads agreeing on a variant position for it to count as a consensus (candidate real) variant rather than single-read noise."}},"required":["reference","reads"],"additionalProperties":false}}]}