Skip to main content
Glama

design_ish_probes

Read-only

Design an in-situ hybridization probe against the subject: tile it into candidate oligos that meet a melting-temperature, G+C and composition specification, screen them for off-target binding against an alignment and for k-mers abundant in a reference, and gather the survivors into the set that images best.

Input Schema

NameRequiredDescriptionDefault
dnac1Noconcentration of the higher-concentration strand, typically the probe, in the melting-temperature calculation (OligoMiner `--dnac1`). In nM.
dnac2Noconcentration of the lower-concentration strand, typically the target (OligoMiner `--dnac2`). The Tm uses dnac1 − dnac2/2, so equal values halve the effective concentration. In nM.
_filesNoThe project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name.
max_gcNohighest percent G+C to accept. In %.
max_tmNohighest melting temperature to accept. In °C.
min_gcNolowest percent G+C to accept. In %.
min_tmNolowest melting temperature to accept, AFTER the formamide correction. In °C.
originNocoordinate of the subject's first base, when it is a window cut from a larger sequence. Read from a UCSC-style `range=` header when the subject carries one. Advanced.
probesNohow many probe sets to return. Only applies when oligos_per_probe is set.
sodiumNomonovalent cation concentration of the hybridization buffer. In mM.
overlapNoreport every window that qualifies, including overlapping ones. Off by default because overlapping oligos cannot be used together in one probe. Advanced.
rank_byNofeature that ranks the sets inside that band. Values: centrality (Centrality on the region), size (Compactness), homogeneity (Even spacing). Only applies when oligos_per_probe is set. Advanced.size
spacingNobases forced between consecutive oligos. In nt. Advanced.
_subjectNoThe record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several.
filter_byNofeature that defines the band of acceptable sets. Values: centrality (Centrality on the region), size (Compactness), homogeneity (Even spacing). Only applies when oligos_per_probe is set. Advanced.centrality
formamideNoformamide in the hybridization buffer; it lowers every melting temperature by about 0.65 °C per percent. In %.
kmer_dumpNo`jellyfish dump` of a genome's k-mer dictionary, for a reference too large to count here: `jellyfish count -m 18 -L 5` then `jellyfish dump -c -L 5` keeps only the k-mers a screen at 5 acts on. Advanced.
max_lengthNolongest oligo to accept; the tiler grows a window until one fits, so a wide range yields more probes. In nt.
min_lengthNoshortest oligo to accept. In nt.
prohibitedNocomma-separated subsequences an oligo may not contain; the default bans homopolymer runs, which hybridize promiscuously. Advanced.AAAAA,TTTTT,CCCCC,GGGGG
kmer_lengthNok, the k-mer length counted in kmer_reference (OligoMiner's README builds 18); a dump carries its own. In nt. Only applies when kmer_reference is set.
screen_modeNotrained model (recovers usable probes near repeats) · unique alignment only (strict) · no alignment at all (for a sequence that should be absent). Values: lda (Trained model), unique (Unique alignment only), zero (No alignment at all). Only applies when alignment_sam is set.lda
alignment_samNoSAM the candidates were aligned with, for off-target screening. Without it the oligos are returned UNSCREENED and the result says so.
kmer_canonicalNocount a k-mer and its reverse complement as one (jellyfish -C). Off as OligoMiner's dictionary is; for a dump it must match how the dictionary was counted. Advanced.
kmer_referenceNoFASTA of the reference to count k-mers in, for OligoMiner's k-mer screen. Counted here, so a whole genome belongs in kmer_dump instead. Without either the oligos are returned with k-mer abundance UNCHECKED and the result says so.
kmer_thresholdNodrop an oligo holding any k-mer that occurs this many times or more in the reference.
filter_thresholdNowidth of the band around the best set, as a fraction of its own value. Only applies when oligos_per_probe is set. Advanced.
oligos_per_probeNooligos to gather into one probe. Leave unset to return every surviving oligo instead of a set.
hybridization_temperatureNotemperature the specificity model was trained at. Only these six exist; the coefficients change sign across the range, so an intermediate value is a different model rather than a blend. In °C. Only applies when alignment_sam is set.
max_off_target_probabilityNokeep an oligo whose modelled chance of a real off-target site is below this. Only applies when alignment_sam is set. Advanced.

Output Schema

NameRequiredDescriptionDefault
kmerYesthe k-mer screen's reading of each oligo it saw: its start, the highest count charged to it, and whether it was kept. Absent when no k-mer reference or dump was given
oligosYesevery oligo that survived all stages, in target order
probesYesthe chosen probe sets, best first, each with its oligos and its three scores
stagesYeswhat each stage took in, put out, and removed - with the reasons named
coverageYesthe coverage track, gaps, spacings and the Tm/G+C distributions a renderer draws
oligoCountYeshow many oligos survived
explanationYesthe derivation chain: conclusion, interpretation and machinery, generated from this run
coveredFractionYesfraction of the target covered by at least one surviving oligo (0-1)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / kmer_canonical
      Added value: +{
      +  "default": false,
      +  "description": "count a k-mer and its reverse complement as one (jellyfish -C). Off as OligoMiner's dictionary is; for a dump it must match how the dictionary was counted. Advanced.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / kmer_dump
      Added value: +{
      +  "description": "`jellyfish dump` of a genome's k-mer dictionary, for a reference too large to count here: `jellyfish count -m 18 -L 5` then `jellyfish dump -c -L 5` keeps only the k-mers a screen at 5 acts on. Advanced.",
      +  "type": "string"
      +}
    • addedInput schema / properties / kmer_length
      Added value: +{
      +  "default": 18,
      +  "description": "k, the k-mer length counted in kmer_reference (OligoMiner's README builds 18); a dump carries its own. In nt. Only applies when kmer_reference is set.",
      +  "maximum": 31,
      +  "minimum": 8,
      +  "type": "number"
      +}
    • addedInput schema / properties / kmer_reference
      Added value: +{
      +  "description": "FASTA of the reference to count k-mers in, for OligoMiner's k-mer screen. Counted here, so a whole genome belongs in kmer_dump instead. Without either the oligos are returned with k-mer abundance UNCHECKED and the result says so.",
      +  "type": "string"
      +}
    • addedInput schema / properties / kmer_threshold
      Added value: +{
      +  "default": 5,
      +  "description": "drop an oligo holding any k-mer that occurs this many times or more in the reference.",
      +  "maximum": 100000,
      +  "minimum": 1,
      +  "type": "number"
      +}
    • addedOutput schema / properties / kmer
      Added value: +{
      +  "description": "the k-mer screen's reading of each oligo it saw: its start, the highest count charged to it, and whether it was kept. Absent when no k-mer reference or dump was given"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "probes",
      -  "oligos",
      -  "oligoCount",
      -  "coveredFraction",
      -  "stages",
      -  "explanation",
      -  "coverage"
      -]New value: +[
      +  "probes",
      +  "oligos",
      +  "oligoCount",
      +  "coveredFraction",
      +  "stages",
      +  "kmer",
      +  "explanation",
      +  "coverage"
      +]
  2. First observed

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds pipeline-level behavior (tiling, off-target screening, k-mer screening, set assembly), but omits the important behavioral fact that omitting alignment_sam or kmer_reference returns UNSCREENED/UNCHECKED oligos — that disclosure lives only in the schema. It also says nothing about runtime, result size, or the single-set versus all-oligos output mode.

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

Conciseness4/5

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

One sentence, front-loaded with the verb and resource, and every clause maps to a distinct pipeline stage rather than padding. It is dense but not redundant; a light structural break (e.g. separating the screening stages) would improve scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter documentation, the description only needs to frame the workflow, which it does. For a 30-parameter tool, though, it should flag the two operating modes (single gathered probe set when oligos_per_probe is set, versus every surviving oligo otherwise) and the unscreened fallback, since those change what an agent gets back.

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

Parameters3/5

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

Schema description coverage is 100% across all 30 parameters, so the schema carries the semantics. The description only gestures at a few of them ('melting-temperature, G+C and composition specification', 'alignment', 'reference'), adding essentially no meaning beyond what the parameter descriptions already provide. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

States a specific verb and resource ('Design an in-situ hybridization probe against the subject') and then enumerates the pipeline stages, so an agent knows exactly what the tool produces. It does not, however, distinguish itself from the closely related in-situ siblings (design_hcr_probes, design_merfish_probes, design_xenium_probes, design_padlock_probes), which is the main ambiguity an agent faces here.

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

Usage Guidelines3/5

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

Usage is only implied by the described workflow: an agent can infer that it needs a subject plus optional alignment/k-mer references to get screened probes. There is no explicit when-to-use statement, no when-not-to-use, and no naming of the sibling probe-design tools as alternatives.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources