Skip to main content
Glama

Jean — Molecular Biology & Genomics

align_sequences

Read-only

Multiple-sequence alignment over several sequences, under either of TWO engines that answer different questions and neither of which is a fallback for the other.

Input Schema

NameRequiredDescriptionDefault
gapNo`poa` only: score for a gap column. Negative. Only applies when engine is poa. Advanced.
matchNo`poa` only: score for a pair of identical symbols. Only applies when engine is poa. Advanced.
_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.
engineNowhich aligner builds the alignment. They answer DIFFERENT questions: `poa` keeps every path through a pile of reads and emits its own consensus row, `progressive` merges a family along a guide tree the way Clustal and MUSCLE do. Each engine reads only its own parameters below. Values: poa (Partial-order (poapy) - reads over one locus), progressive (Progressive (biotite) - a family, guide-tree merged).poa
_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.
gap_openNo`progressive`, affine only: the penalty for STARTING a gap. Negative. Only applies when affine_gap is true.
mismatchNo`poa` only: score for a mismatching pair. Negative. Only applies when engine is poa. Advanced.
sequencesNothe sequences to align — wire several upstream outputs here, or list library document names/ids.
affine_gapNo`progressive` only: `false` charges one flat penalty per gap column; `true` charges separate opening and extension penalties, which is what keeps a real indel as ONE gap instead of many. Only applies when engine is progressive.
gap_extendNo`progressive`, affine only: the penalty for each column a gap is extended by. Negative, and gentler than `gap_open` - an extension harsher than the opening makes the aligner prefer many short gaps to one long indel. Only applies when affine_gap is true.
guide_treeNo`progressive` only: which tree the merge follows. The Feng-Doolittle distances are the aligner's either way; this chooses only how they are clustered into an order. UPGMA is biotite's own and the one the port reproduces byte-for-byte; neighbour-joining and BIONJ do not assume a molecular clock, so on sequences evolving at different rates they group by relatedness where UPGMA groups by raw similarity - which is exactly the case where the guide tree changes the alignment. Values: upgma (UPGMA (biotite's own)), nj (Neighbour-joining), bionj (BIONJ), wpgma (WPGMA). Only applies when engine is progressive.upgma
gap_penaltyNo`progressive` only: the flat penalty per gap column. Negative. Only applies when affine_gap is false.
align_matrixNo`progressive` only: the substitution matrix the ALIGNMENT itself is scored with - distinct from `score_matrix`, which only scores the quality report afterwards. `auto` reads the alphabet: EDNAFULL for nucleotides, BLOSUM62 for protein. Naming the wrong one is not an error the engine can raise - BLOSUM62 reads A, C, G and T as alanine, cysteine, glycine and threonine and returns a number. Values: auto (Auto - from the alignment's alphabet), EDNAFULL (EDNAFULL - nucleotides (EMBOSS NUC.4.4)), BLOSUM62 (BLOSUM62 - amino acids). Only applies when engine is progressive.auto
global_alignNoglobal alignment rather than local. Poapy's own default is LOCAL; both this tool and the MSA inspector open on global, which is the choice a full-length comparison wants - switch it off for reads over part of a locus. Only applies when engine is poa. Advanced.
score_matrixNosubstitution matrix for the pyMSA sum-of-pairs and star scores in the quality report. Both engines. Left unset only the matrix-free scores are computed (entropy, % non-gaps, % totally conserved columns) - an honest absence rather than a score under a matrix that does not match the alphabet. Values: PAM250 (PAM250 - amino acids, greater evolutionary distance), BLOSUM62 (BLOSUM62 - amino acids), EDNAFULL (EDNAFULL - nucleotides). Advanced.
include_subjectNoalso align the node's subject (the open or wired record).
terminal_penaltyNo`progressive` only: `true` charges overhanging ends like an internal gap - right for full-length homologues. `false` makes them free, which is right when a sequence covers only part of the region, e.g. a read against a gene. Only applies when engine is progressive.

Output Schema

NameRequiredDescriptionDefault
fitYesper row: its closest row in this alignment, their identity here, and the same pair's identity aligned on its own with free end gaps (biotite align_optimal) — the loss shows where the alignment holds a row out of register; `outliers` names the rows flagged. `{ ok: false, reason }` when the check could not run
rowsYesaligned rows (name + gapped sequence)
countYesnumber of aligned sequences (excluding the consensus row)
engineYeswhich aligner produced this alignment — `poa` or `progressive`
figureYesthe alignment's first 80 columns drawn as the MSA canvas opens on them: rows named, residues shaded by column identity, the conservation line under the block. draw_alignment draws any other window
lengthYesalignment width in columns
scoresYesthe pyMSA quality scores: summed entropy (nats, pyMSA's sign — negative), % non-gaps, % totally conserved columns, and the sum-of-pairs/star pair when a `score_matrix` was named
consensusYesthe per-column majority consensus (POA returns its own graph consensus row; the progressive engine has no graph, so the majority is the consensus for both)
conservationYesthe Clustal-style conservation line, one character per column — `*` where every row carries the same residue and the column is ungapped
guideTreeNewickYes`progressive` only: the guide tree the merge followed, in Newick, labelled with the row names. Branch lengths are deliberately omitted — a guide tree's heights are a clustering artifact, not divergence estimates
alignedSequencesYesthe aligned input rows only, excluding the generated consensus — wire this into build_tree

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / figure
      Added value: +{
      +  "description": "the alignment's first 80 columns drawn as the MSA canvas opens on them: rows named, residues shaded by column identity, the conservation line under the block. draw_alignment draws any other window",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "rows",
      -  "length",
      -  "count",
      -  "consensus",
      -  "alignedSequences",
      -  "conservation",
      -  "engine",
      -  "scores",
      -  "guideTreeNewick",
      -  "fit"
      -]New value: +[
      +  "rows",
      +  "length",
      +  "count",
      +  "consensus",
      +  "alignedSequences",
      +  "conservation",
      +  "engine",
      +  "scores",
      +  "guideTreeNewick",
      +  "figure",
      +  "fit"
      +]
  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 establish readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds the meaningful behavioral fact that the two engines are semantically distinct and non-interchangeable, but says nothing about what the alignment result contains or costs.

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?

A single front-loaded sentence with no filler, and the two-engine warning is placed where it will be read first. The capitalized emphasis and the phrase 'answer different questions' are slightly cryptic for such a short text, which keeps it from a 5.

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 exhaustive parameter descriptions, the description need not explain returns or inputs. It is still thin for a 17-parameter, four-enum, nested-object tool: the one thing only the description could settle — how to choose between the engines — is asserted as important but never resolved.

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% and every parameter already carries a detailed, engine-scoped explanation, which sets the baseline at 3. The description adds no parameter-level meaning beyond gesturing at the two-engine split that the schema itself unpacks far more precisely.

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+resource ('multiple-sequence alignment over several sequences') and adds that it runs on two distinct engines. It does not distinguish itself from nearby siblings such as align_read, ebi_align, or draw_alignment, so an agent cannot rule those out from the description alone.

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?

The clause that the two engines 'answer different questions and neither of which is a fallback' warns against a wrong engine choice, which is real guidance. However, it never says which situation selects poa vs progressive, and gives no when-to-use versus sibling alignment tools.

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