Quickstart and one example per task
Connect a client in one command, then copy any request below. Every request is complete as written: the bodies use records from the bundled sample library, so nothing has to be uploaded first.
| Base address | https://<host>/api/tools/<tool> for one tool, https://<host>/mcp for a client |
| Key | None |
| Bundled records used below | pEGFP-N1 (GenBank U55762) and two Sanger reads of a COI barcode |
Claude Code, in one command
claude mcp add --transport http jane https://<host>/mcpclaude mcp get jane then shows whether it connected. The server asks for no key or header, so the
command takes nothing else. For Claude's web and desktop apps, and for any client configured through
a dialog or a file, see Connecting.
curl, one request per kind of task
Each heading is one kind of bench task. The answer quoted under each request is what that request returns.
What is in a project
curl -s https://<host>/api/tools/describe_project \
-H 'content-type: application/json' \
-d '{"_files": [{"sample": "data/samples/Genbank/CVU55762.gb"}, {"sample": "data/sanger-pair/Achl_ACHLO006-09_1_F.ab1"}, {"sample": "data/sanger-pair/Achl_ACHLO006-09_2_R.ab1"}], "title": "COI barcode check"}'data.text describes each file the way the in-app assistant is told about it: the GenBank record as
4,733 bp with its annotated features, each trace as a chromatogram with base calls and quality, and
which tool reads each one. It also says the three files are not indexes, trace pairs or tool output
of each other.
Cloning: where enzymes cut
curl -s 'https://<host>/api/tools/find_restriction_sites?analysis=1' \
-H 'content-type: application/json' \
-d '{"_subject": {"sample": "data/samples/Genbank/CVU55762.gb"}, "enzymes": ["EcoRI", "BamHI", "NotI"]}'All three cut pEGFP-N1 exactly once, each leaving a 4-base 5′ overhang. top is how many bases lie
before the top-strand cut: 629 for EcoRI, 660 for BamHI and 1401 for NotI. ?analysis=1 adds the reading: three single cutters, and why a single cut matters
on a circular molecule.
Amplification: a PCR product
curl -s 'https://<host>/api/tools/pcr_amplify?analysis=1' \
-H 'content-type: application/json' \
-d '{"_subject": {"sample": "data/samples/Genbank/CVU55762.gb"}, "forward": "ATGGTGAGCAAGGGCGAGGA", "reverse": "TTACTTGTACAGCTCGTCCA"}'The two primers are the first and last 20 bases of the EGFP coding sequence. One product comes back:
720 bp, the whole EGFP gene, primers at 67.5 °C and 58.9 °C and an annealing temperature of
61.7 °C. The reading says those temperatures assume the default buffer because none was sent, and
conditions is how to send yours. The HTTP page
works through a buffer for one primer.
Design: screening a CRISPR guide
curl -s 'https://<host>/api/tools/screen_guides?analysis=1' \
-H 'content-type: application/json' \
-d '{"spacers": ["AGGGCGAGGAGCTGTTCACC"]}'The spacer is the first one in the EGFP coding sequence with an NGG PAM. It comes back clean: 65% GC clears the 40% gate, and it forms no hairpin with itself or with the original gRNA backbone.
Analysis: translating an annotated gene
curl -s https://<host>/api/tools/translate_sequence \
-H 'content-type: application/json' \
-d '{"_subject": {"sample": "data/samples/Genbank/CVU55762.gb"}, "feature": "egfp"}'The egfp feature translates to 239 residues and a stop, starting MVSKGEELFTGVVPILVELDGDVNGHKF.
The feature is found by name, so its coordinates are never typed.
Sequencing: a consensus of two Sanger reads
curl -s 'https://<host>/api/tools/consensus_from_traces?analysis=1' \
-H 'content-type: application/json' \
-d '{"_files": [{"sample": "data/sanger-pair/Achl_ACHLO006-09_1_F.ab1"}, {"sample": "data/sanger-pair/Achl_ACHLO006-09_2_R.ab1"}], "document": "Achl_ACHLO006-09_1_F.ab1", "second_document": "Achl_ACHLO006-09_2_R.ab1", "reverse_complement_second": true}'The forward and reverse reads of one COI barcode, the reverse one turned around, give a 746-base consensus with 16 positions (2%) where the two reads disagree.
Records: drawing a plasmid map
curl -s https://<host>/api/tools/export_map_svg \
-H 'content-type: application/json' \
-d '{"_subject": {"sample": "data/samples/Genbank/CVU55762.gb"}, "enzymes": ["EcoRI", "NotI"], "title": "pEGFP-N1"}'A 1400 × 1400 map as SVG in data.svg, with the two sites drawn on it. Over MCP the same call also
returns the figure as an image.
What this computes
Each request above runs the same engine as the matching panel in the workbench:
- A project description: each file's format, size and length, what it carries, which tool reads it, and whether files are indexes, trace pairs or outputs of each other.
- Restriction sites: recognition-site positions on both strands, overhang type and sequence, cuts that wrap a circular origin, and the cut count per enzyme.
- PCR: every primer binding site on the template, the products between them, primer and product melting temperatures, and the annealing temperature.
- Guide screening: the GC gate, self-complementary hairpins and pairing against the gRNA backbone, with the count each screen removed.
- Translation: a feature's protein under its own genetic code, and the region translated.
- Sanger consensus: the two reads aligned, a consensus called position by position, and the positions where the reads disagree.
- Plasmid maps: a circular map with features and the enzyme sites asked for.