Skip to main content
Glama

Jean — Molecular Biology & Genomics

variant_call_summary

Read-only

Summarize a variant call set the way bcftools stats does: records by class, transitions and transversions with their ratio, the twelve directed substitutions, indel lengths, per-contig counts, the FILTER tally, the QUAL range, and per-sample genotype counts.

Input Schema

NameRequiredDescriptionDefault
fileNowhich call set in this project, by name. Unset, it is the project's only one, and it refuses rather than guessing when there is more than one.
_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.
contigNosummarize ONE contig instead of the whole file, named as the file names it. The per-contig table is always over everything read; this narrows what everything else counts.
_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.
pass_onlyNocount only records whose FILTER is PASS or unset. A Ts/Tv computed over unfiltered calls and one computed over passing calls are different measurements, and this is which one you asked for.

Output Schema

NameRequiredDescriptionDefault
qualYesmin, max, median and the number of records stating no QUAL. Null when nothing stated one, which is not the same as a range of zero
tstvYests, tv and ratio over every ALT, and tsFirstAlt/tvFirstAlt/ratioFirstAlt over each site’s first ALT only. Both, because bcftools reports both and a multiallelic call set makes them differ
countsYesrecords, samples, and the class tallies: snps, mnps, indels, others, noAlts, multiallelicSites and multiallelicSnpSites. A site counts in every class its alleles carry, which is how bcftools counts them
filtersYesevery FILTER value seen with its count, including PASS and the unfiltered (`.`) tally: the two are different states and are counted apart
summaryYesthe call set in one sentence, generated from this run
indelPlotYessites per indel length (ALT minus REF), deletions left of zero and insertions right of it
per_contigYesrecords, snps and indels per contig, over everything read
per_sampleYesbcftools' PSC section per sample: refHom, nonRefHom, hets, transitions, transversions, indels, averageDepth, singletons, hapRef, hapAlt and missing
not_countedYeswhat this run could NOT count and why: `genotypesUnavailable` when the file's genotypes were not parsed (so per_sample is empty for a reason), and `badAlleleCalls` listing genotypes naming an allele their record never declares. Real bcftools stats exits on such a file rather than reporting per-sample numbers, so a non-empty list means per_sample has no bcftools counterpart to be compared against
indel_lengthsYesindel length (ALT minus REF) to the number of sites, sorted by length: bcftools' IDD section. Negative is a deletion
substitutionsYesthe twelve directed substitution types with their counts
substitutionMapYesthe twelve directed substitutions as a REF by ALT grid, the Summary tab’s bars as one picture; the diagonal is empty, since a base does not substitute for itself

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / indelPlot
      Added value: +{
      +  "description": "sites per indel length (ALT minus REF), deletions left of zero and insertions right of it",
      +  "properties": {
      +    "mark": {
      +      "enum": [
      +        "line",
      +        "bar",
      +        "point"
      +      ],
      +      "type": "string"
      +    },
      +    "rules": {
      +      "items": {
      +        "properties": {
      +          "label": {
      +            "type": "string"
      +          },
      +          "y": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "y",
      +          "label"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "series": {
      +      "items": {
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "y": {
      +            "items": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "y"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "x": {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    "xLabel": {
      +      "type": "string"
      +    },
      +    "yLabel": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "x",
      +    "series",
      +    "xLabel",
      +    "yLabel"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / substitutionMap
      Added value: +{
      +  "description": "the twelve directed substitutions as a REF by ALT grid, the Summary tab’s bars as one picture; the diagonal is empty, since a base does not substitute for itself",
      +  "properties": {
      +    "cols": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "label": {
      +      "type": "string"
      +    },
      +    "rows": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "values": {
      +      "items": {
      +        "items": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "type": "array"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "rows",
      +    "cols",
      +    "values",
      +    "label"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "summary",
      -  "counts",
      -  "tstv",
      -  "substitutions",
      -  "indel_lengths",
      -  "per_contig",
      -  "filters",
      -  "qual",
      -  "per_sample",
      -  "not_counted"
      -]New value: +[
      +  "summary",
      +  "counts",
      +  "tstv",
      +  "substitutions",
      +  "indel_lengths",
      +  "substitutionMap",
      +  "indelPlot",
      +  "per_contig",
      +  "filters",
      +  "qual",
      +  "per_sample",
      +  "not_counted"
      +]
  2. First observed

TDQS

A4/5.0
Behavior4/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 meaningful behavioral context by specifying the exact bcftools-stats-style computations, including Ts/Tv, directed substitutions, indels, FILTER tallies, QUAL ranges, and genotype counts. It still does not discuss limits, failure modes, or runtime considerations.

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

Conciseness5/5

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

The definition is a single front-loaded sentence that states the core action immediately, then lists the computed metrics. The list is dense but every item describes useful output content, and there is no boilerplate or repetition.

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

Completeness4/5

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

Given the output schema and full parameter documentation, the description is largely complete for a complex summary tool. It clearly communicates the statistical scope and bcftools equivalence. The main omission is guidance on when this summary is preferable to sibling analysis tools.

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 the descriptions for file, contig, pass_only, _files, and _subject are detailed. The main description does not add parameter-level semantics beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: summarize a variant call set, and explicitly equates the output to bcftools stats. It enumerates the included statistics, so an agent can distinguish it from read_variant_calls, variant_consequences, and population_site_stats without opening schemas.

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 implied by the summary purpose and the bcftools stats analogy, but the description gives no explicit when-to-use guidance or named alternatives. It does not say when a user should choose this over read_variant_calls or population_site_stats.

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