Skip to main content
Glama

jean — Molecular Biology & Genomics

score_variant_effect

Read-only

Score protein substitutions with ESM-2, the zero-shot way facebookresearch/esm's own predict.py does: how much less (or more) likely the mutant residue is than the wild type at that site, under a protein language model. It ranks a saturation library without an assay — and it is a RANKING IN NATS, not a stability measurement: it carries no kcal/mol and is calibrated against nothing. THE MODEL IS DOWNLOADED ON FIRST RUN, 30 MB for the 8M export and 2.6 GB for the 650M one, then cached; a run in a browser with no network to Hugging Face will refuse rather than hang.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelNowhich published ESM-2 ONNX export to score under. The three sizes are a download decision as much as an accuracy one, and the label says which. Values: esm2_t6_8M (ESM-2 8M · 30.3 MB), esm2_t12_35M (ESM-2 35M · 134.5 MB), esm2_t33_650M (ESM-2 650M · 2.61 GB).esm2_t6_8M
_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.
proteinYesthe protein the positions are numbered against, one letter per residue. Wire a translation, or the CDS protein the library was designed on — the positions mean nothing without it.
_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.
strategyNohow the score is computed. `masked-marginals` is ESM-1v's recommendation — one forward pass per residue, each with that site masked. `wt-marginals` is one pass over the wild type and the paper reports it as weaker. `pseudo-ppl` scores the whole mutant sequence and costs one pass per residue PER VARIANT, which is two orders of magnitude more; its number is a log-likelihood, not a ratio, and is comparable only against other variants of the same protein. Values: wt-marginals (Wild-type marginals), masked-marginals (Masked marginals), pseudo-ppl (Pseudo-perplexity).masked-marginals
variantsYesthe substitutions, in `A24D` form: wild-type residue, position, mutant residue. Every one is checked against `protein` first, because a scored substitution whose wild type does not match is a confident number about a protein nobody has.
offset_idxNothe number `position` counts from. 1 is ordinary protein numbering; set it when your variants are numbered against a mature chain or a construct that starts partway in. Advanced.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelYeswhich ESM-2 export produced these scores. Scores from two models are not comparable
passesYesforward passes the run cost — the price of the strategy, after the fact
rankedYesjust the substitution notations, in the same order — the list to take forward into an order or a filter
scoresYesevery variant with its score in nats, the strategy that produced it and the forward passes it cost — MOST DAMAGING FIRST, which is the reason to rank a library at all
captionYesthe one sentence a score may never be shown without, generated from THIS run rather than fixed: what the number means under the strategy that produced it, and what it is not
strategyYeswhich of the three strategies ran. Scores from two strategies are not comparable either, and pseudo-perplexity is not even the same quantity
mostDamagingYesthe lowest-scoring substitution. It is the model's opinion about likelihood, not a measured loss of function, and `caption` is the sentence that says so
variantCountYeshow many substitutions were scored
leastDamagingYesthe highest-scoring substitution — the one the model finds most ordinary

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, yet the description still adds substantive behavior: first-run model download (30 MB vs 2.6 GB), caching, and a hard-refuse-instead-of-hang policy when there is no network to Hugging Face. That is real operational context an agent needs to set expectations and avoid timeout assumptions.

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?

Front-loaded with what it does and its most important caveat (ranking, not kcal/mol), followed by the download/offline note. Dense but every clause is load-bearing; the model-size parenthetical is slightly long but justified as a download decision the caller must make.

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

Completeness5/5

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

Output schema exists, so return values need not be explained, and the description covers the two things an agent could otherwise get wrong: misreading the score as a thermodynamic measurement, and assuming network-dependent first-run behavior is instant. Adequate for a 7-param tool with nested objects and enums.

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 schema itself carries the rich semantics for `strategy`, `model`, `variants`, `offset_idx` and `protein` (including the wt-check behavior). The tool-level description adds no parameter-level detail beyond what the schema already documents, so the baseline 3 applies.

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?

States a specific verb+resource ('Score protein substitutions with ESM-2') and pins the method to a named reference implementation (`facebookresearch/esm`'s `predict.py`). It goes further by disambiguating from a nearby-but-different capability ('it is a RANKING IN NATS, not a stability measurement'), so an agent can tell it apart from protein_properties or lookup_variant without opening the schema.

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

Usage Guidelines4/5

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

Gives a clear use context ('ranks a saturation library without an assay') and an explicit when-not ('not a stability measurement: it carries no kcal/mol and is calibrated against nothing'). It stops short of naming a sibling tool to use instead when a real stability measurement is wanted, so it is clear context without full alternative routing.

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