Skip to main content
Glama

gnomad-genetics-mcp-server

Server Details

Look up allele frequencies by ancestry, gene constraint, variants, and coverage over gnomAD.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 41 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/gnomad-genetics-mcp-server
GitHub Stars
1
Server Listing
@cyanheads/gnomad-genetics-mcp-server

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct resource or action: targeted variant lookup (gnomad_get_variant) vs. gene/region variant listing (gnomad_list_gene_variants), coverage vs. constraint, and ClinVar search vs. variant-level annotation. The two dataframe helpers are clearly subordinate to staged canvas tables and do not overlap with the retrieval tools.

Naming Consistency4/5

All tools share the gnomad_ prefix and snake_case convention, and most follow a verb_noun pattern (get_coverage, list_gene_variants, search_clinvar). The two dataframe tools deviate slightly with a noun-first form (dataframe_describe, dataframe_query), though they remain readable and predictable.

Tool Count5/5

Seven tools are well-scoped for a gnomAD genetics server, covering variant lookup, gene/region listing, coverage, constraint, ClinVar search, and staged-table SQL support. No tool appears redundant or missing from the overall set.

Completeness4/5

The surface covers core variant interpretation workflows: variant records, gene/region variant lists, sequencing coverage, gene constraint, ClinVar classification, and flexible SQL over staged results. Minor gaps remain, such as dedicated gene metadata/search or structural-variant coverage, but agents can work around these for common tasks.

Available Tools

7 tools
gnomad_dataframe_describegnomad-genetics-mcp-server: dataframe describeA
Read-onlyIdempotent
Inspect

List the tables staged on a canvas and their columns (name and type) so you can write correct SQL for gnomad_dataframe_query. Use the canvas_id returned by gnomad_list_gene_variants or gnomad_search_clinvar. Returns one entry per table with its row count and column schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_idYesCanvas ID returned by a prior staging call (gnomad_list_gene_variants or gnomad_search_clinvar).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
tablesNoTables staged on the canvas.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover readOnlyHint and idempotentHint, so the safety profile is known. The description adds value by disclosing the return shape—'one entry per table with its row count and column schema'—and by clarifying the canvas-staging context.

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?

Three short, purposeful sentences. The first sentence front-loads the action and purpose, the second gives the prerequisite, and the third describes the output. No filler or redundancy.

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?

For a single-parameter, read-only tool with an output schema available, the description is complete: it explains what the tool returns, why it is needed for SQL generation, and how to obtain the required canvas_id. Nothing essential is missing.

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 coverage is 100% and the single parameter canvas_id is already described as the ID returned by prior staging calls. The description repeats this provenance without adding extra syntax or format details, so the schema carries the semantic weight.

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 states a specific verb and resource: 'List the tables staged on a canvas and their columns.' It also ties this to the downstream action of writing correct SQL for gnomad_dataframe_query, which distinguishes it from the query and staging siblings.

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?

The description gives clear usage context: call it after gnomad_list_gene_variants or gnomad_search_clinvar, and use the returned canvas_id before issuing gnomad_dataframe_query. It does not explicitly state when not to use it, but the intended workflow is unambiguous.

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

gnomad_dataframe_querygnomad-genetics-mcp-server: dataframe queryA
Read-onlyIdempotent
Inspect

Run a read-only SQL SELECT against a canvas table staged by gnomad_list_gene_variants (table gene_variants) or gnomad_search_clinvar (table clinvar_variants) and return one page of the result. Use the canvas_id and table_name those tools returned to rank by allele frequency, group by consequence class, count loss-of-function variants, or filter the full set the inline preview only sampled. A page holds up to limit rows (default 100, max 500) and ends early once its rows reach 10,000 characters of JSON; continue from next_offset until it is null. Each page re-runs the SQL, so stable paging needs an ORDER BY over a unique key (such as variant_id) and an unchanged table. Paging reaches the server row cap: above it total is null and later rows are reachable only by filtering or aggregating in SQL. SELECT statements only — writes, DDL, and file/HTTP table functions are rejected by the canvas gate. Call gnomad_dataframe_describe first to discover staged table and column names.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesRead-only SQL SELECT. Reference tables by the names the staging tool returned (e.g. gene_variants). Add an ORDER BY over a unique key when paging.
limitNoMaximum rows on the page (1–500). A page also ends before its rows pass 10,000 characters of JSON.
offsetNoRow offset of the page to return. Start at 0, then pass next_offset from the previous page.
canvas_idYesCanvas ID returned by gnomad_list_gene_variants or gnomad_search_clinvar.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNoThis page of result rows, in result order.
errorNoPresent when the call failed. Absent on success.
totalNoRows the SQL produced; null when the result exceeds the server row cap, whose later rows paging cannot reach.
offsetNoRow offset this page starts at.
columnsNoColumn names in the result, in order.
returnedNoRows on this page — fewer than limit when the 10,000-character row budget or the end of the result ends it early.
truncatedNoTrue when result rows exist after this page, including rows past the row cap that next_offset cannot reach.
next_offsetNooffset for the next page; null when no page follows (end of the result, or the row cap reached).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint, idempotentHint and openWorldHint=false; the description goes well beyond by disclosing the 10,000-character page cutoff, that each page re-runs the SQL so stable paging requires ORDER BY over a unique key, that row caps make total null, and that a canvas gate rejects non-SELECT statements. These are the exact operational traits an agent needs to page correctly.

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-loads the core action and staging tools, then layers paging rules in descending priority; no sentence is wasted. Slightly long and repeats the limit default/max already in the schema, costing a bit of tightness.

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?

An output schema exists, so return values need no explanation, yet the description still covers the pagination contract (next_offset, early termination, row cap) that governs how the agent should loop. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3), and the description adds meaning beyond it: it ties offset to next_offset continuation, restates the default/max limit behavior in a paging context, and explains the ORDER BY unique-key requirement for stable paging. Minor overlap with schema text keeps it below 5.

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 and resource ('Run a read-only SQL SELECT against a canvas table') and names the exact staging tools and table names (gene_variants, clinvar_variants) that produce the input. An agent can distinguish it from the sibling staging tools and from gnomad_dataframe_describe without opening any schema.

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

Usage Guidelines5/5

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

Gives concrete when-to-use cases (rank by allele frequency, group by consequence, count LoF variants, filter beyond the inline preview) and explicitly routes the agent to call gnomad_dataframe_describe first. It also states what is not allowed (writes, DDL, file/HTTP table functions), which is a genuine exclusion.

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

gnomad_get_coveragegnomad-genetics-mcp-server: get coverageA
Read-onlyIdempotent
Inspect

Fetch gnomAD sequencing-coverage summary across a gene, transcript, or region — mean and median read depth, plus the mean fraction of samples covered at each depth threshold (1× through 100×), separated by exome and genome track. Use this to disambiguate a true absent variant from an uncallable position: a variant missing from a well-covered region is informative, while one missing from a poorly-covered region is not. Supply exactly one of gene, transcript_id, or region. The optional coverage_source narrows to one track; by default both available tracks are returned. Echoes the effective dataset and build. Data source: gnomAD (Broad Institute) — https://gnomad.broadinstitute.org/

ParametersJSON Schema
NameRequiredDescriptionDefault
geneNoGene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mitochondrial genes (e.g. MT-TL1) are not served. Mutually exclusive with transcript_id and region; blank means omitted.
regionNoGenomic region chrom-start-stop (1-based inclusive, e.g. 1-55039447-55064852): chromosome 1–22, X, or Y with an optional chr prefix (mitochondrial regions are not served) and a span (stop − start) under 2,500,000 bp. Mutually exclusive with gene and transcript_id.
datasetNognomAD dataset: gnomad_r4 (GRCh38, default), gnomad_r3 (GRCh38), gnomad_r2_1 (GRCh37), exac (GRCh37). Echoed in output.
transcript_idNoEnsembl transcript ID (e.g. ENST00000302118). Mutually exclusive with gene and region; blank means omitted.
coverage_sourceNoRestrict to one coverage track. Omit to return every available track.
reference_genomeNoReference build. Derived from dataset when omitted (v4/v3=GRCh38, v2.1/ExAC=GRCh37). If supplied it must match the dataset, or the call is rejected. Keep aligned with ensembl coordinates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when no coverage data is available for the target.
targetNoThe resolved target (gene symbol/ID, transcript ID, or region) the coverage describes.
datasetNoEffective gnomAD dataset.
summariesNoPer-track coverage summaries (exome and/or genome).
target_kindNoWhich target type was queried.
reference_genomeNoEffective reference build.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld safety profile, so the burden is lower, yet the description adds real behavior: default returns both tracks, coverage_source narrows to one, and the effective dataset/build are echoed. The mutual-exclusivity and rejection-on-mismatch rules further help the agent predict outcomes.

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?

Information is front-loaded: purpose, output shape, then the disambiguation rationale, then parameter rules. Slightly verbose with some restatement (dataset/build echoing appears twice and the data-source URL), but each sentence carries usable signal.

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?

An output schema exists, so return values need not be explained; combined with 100% schema coverage and the annotations, the description supplies everything an agent needs — purpose, use case, selection constraint, and defaults — for this moderately complex tool.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds the selection rule ('supply exactly one of gene, transcript_id, or region') and the default-vs-narrow behavior of coverage_source, reinforcing the key invocation constraint beyond the raw property descriptions.

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 and resource ('Fetch gnomAD sequencing-coverage summary across a gene, transcript, or region') and enumerates the returned quantities (mean/median read depth, fraction covered at 1×–100×, split by exome/genome). It is clearly distinguishable from siblings like get_variant or get_gene_constraint.

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 an explicit motivating use case — 'disambiguate a true absent variant from an uncallable position' — with the reasoning spelled out. It does not name a sibling tool or state when-not-to-use, so it stops short of the 5 tier.

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

gnomad_get_gene_constraintgnomad-genetics-mcp-server: get gene constraintA
Read-onlyIdempotent
Inspect

Fetch gnomAD loss-of-function constraint for a gene — pLI (probability of LoF intolerance; >0.9 intolerant), LOEUF (oe_lof_upper, the headline metric) plus its lower bound, observed/expected ratios for LoF, missense, and synonymous variation, and the three Z-scores. This is the orthogonal axis to allele frequency: a loss-of-function variant matters far more in a gene intolerant to being broken. Accepts an HGNC symbol (PCSK9) or an Ensembl gene ID (ENSG00000169174). constraint_release names the release the metrics come from: gnomAD v4.1.2 for gnomad_r4 and gnomad_r3 (gnomAD publishes no v3 constraint), gnomAD v2.1.1 for gnomad_r2_1, and ExAC r0.3 for exac. gnomAD recommends LOEUF < 0.45 to call a gene LoF-intolerant on v4.1.2 and LOEUF < 0.35 on v2.1.1. ExAC r0.3 publishes only pLI, the Z-scores, and observed/expected counts, so on exac the ratios and LOEUF are null, constraint_flags is empty, and pLI is the intolerance measure. Many genes have null constraint (sparse upstream) — null fields are reported as such, never fabricated. Echoes the effective dataset and reference build. Data source: gnomAD (Broad Institute) — https://gnomad.broadinstitute.org/

ParametersJSON Schema
NameRequiredDescriptionDefault
geneYesGene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene.
datasetNognomAD dataset: gnomad_r4 (GRCh38, default), gnomad_r3 (GRCh38), gnomad_r2_1 (GRCh37), exac (GRCh37). Echoed in output.
reference_genomeNoReference build. Derived from dataset when omitted (v4/v3=GRCh38, v2.1/ExAC=GRCh37). If supplied it must match the dataset, or the call is rejected. Keep aligned with ensembl coordinates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pliNopLI — probability of LoF intolerance; >0.9 intolerant. Null when unavailable.
errorNoPresent when the call failed. Absent on success.
lof_zNoLoF constraint Z-score. Null when unavailable.
mis_zNoMissense constraint Z-score. Null when unavailable.
syn_zNoSynonymous constraint Z-score. Null when unavailable.
oe_lofNoNon-negative observed/expected LoF ratio. Null when unavailable.
oe_misNoObserved/expected missense ratio. Null when unavailable.
oe_synNoObserved/expected synonymous ratio. Null when unavailable.
symbolNoHGNC gene symbol.
datasetNoEffective gnomAD dataset.
exp_lofNoNon-negative expected LoF variant count. Null when unavailable.
exp_misNoNon-negative expected missense count. Null when unavailable.
exp_synNoNon-negative expected synonymous count. Null when unavailable.
gene_idNoEnsembl gene ID resolved for the gene.
obs_lofNoNon-negative observed LoF variant count. Null when unavailable.
obs_misNoNon-negative observed missense count. Null when unavailable.
obs_synNoNon-negative observed synonymous count. Null when unavailable.
oe_lof_lowerNoLOEUF confidence-interval lower bound. Null when unavailable.
oe_lof_upperNoLOEUF (oe_lof_upper) — the headline intolerance metric; gnomAD recommends < 0.45 on v4.1.2 and < 0.35 on v2.1.1 to call a gene LoF-intolerant. Null when unavailable, and always null on exac.
constraint_flagsNoCaveat flags gnomAD attaches to the gene’s constraint (e.g. no_exp_lof, mis_too_many, syn_outlier); empty when none, and always empty on exac, where ExAC publishes no flags.
reference_genomeNoEffective reference build.
constraint_releaseNoConstraint release the metrics come from: gnomAD v4.1.2 for gnomad_r4 and gnomad_r3 (gnomAD publishes no v3 constraint, so gnomad_r3 serves the GRCh38 table), gnomAD v2.1.1 for gnomad_r2_1, ExAC r0.3 for exac.

TDQS

A4.6/5.0
Behavior5/5

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

With annotations covering safety (readOnly, idempotent, openWorld), the description adds substantial behavioral context: null fields are reported as null and never fabricated, ExAC r0.3 returns null LOEUF/ratios with empty constraint_flags, and reference_genome is rejected if it mismatches the dataset. These are caveats an agent cannot infer from annotations or schema.

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 the headline metric (LOEUF) and its interpretation threshold, followed by edge-case caveats in descending priority. It is dense and long-ish, but nearly every clause (thresholds, release mapping, null handling) is actionable, so little is wasted.

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?

An output schema exists, so return structure need not be described, and the description still supplies the interpretive context (LOEUF < 0.45 on v4.1.2, < 0.35 on v2.1.1) an agent needs to use the result correctly. Nothing required to call or interpret the tool is missing.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents gene, dataset, and reference_genome, so the baseline is 3. The description earns above baseline by mapping each dataset to its actual constraint release (v4.1.2, v2.1.1, ExAC r0.3) and by noting that reference build is derived from dataset and echoed in output — meaning beyond what the schema's enum text conveys.

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 (fetch) and resource (gnomAD loss-of-function constraint for a gene) and enumerates exactly which metrics are returned (pLI, LOEUF, observed/expected ratios, three Z-scores). It also positions itself against siblings by calling constraint 'the orthogonal axis to allele frequency', so an agent can distinguish it from get_variant or list_gene_variants.

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?

It tells the agent what to do with the result — interpret variant impact via gene intolerance — and specifies accepted identifiers and dataset/release alignment rules. It does not, however, explicitly name a sibling or state when to prefer another tool, so it stops just short of full routing guidance.

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

gnomad_get_variantgnomad-genetics-mcp-server: get variantA
Read-onlyIdempotent
Inspect

Fetch the full gnomAD population record for one or more variants — allele count/number/frequency overall and broken down per genetic-ancestry group, homozygote and hemizygote counts, quality flags, transcript consequence, in-silico predictor scores, and joined ClinVar clinical significance. The "how common, is it benign" answer in one call. Accepts a batch of up to 25 IDs (chrom-pos-ref-alt or rsID) with per-item partial success: a malformed or absent ID lands in failed[] — with its reason and a recovery hint — without failing the others. An empty found[] for a well-formed ID means the variant is not in the chosen dataset — pair with gnomad_get_coverage to confirm the position is callable before concluding true absence. Data source: gnomAD (Broad Institute) — https://gnomad.broadinstitute.org/

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetNognomAD dataset: gnomad_r4 (GRCh38, default), gnomad_r3 (GRCh38), gnomad_r2_1 (GRCh37), exac (GRCh37). Echoed in output.
variantsYes1–25 variant IDs (chrom-pos-ref-alt or rsID) to look up in one batched call.
reference_genomeNoReference build. Derived from dataset when omitted (v4/v3=GRCh38, v2.1/ExAC=GRCh37). If supplied it must match the dataset, or the call is rejected. Keep aligned with ensembl coordinates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
foundNoVariants resolved to a population record.
failedNoPer-item failures, in input order: malformed IDs, variants absent from the dataset, or upstream errors — each with its reason and recovery hint.
noticeNoNon-fatal notice when optional ClinVar annotation was unavailable.
datasetNoEffective gnomAD dataset used for the batch.
reference_genomeNoEffective reference build used for the batch.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, openWorld), and the description adds genuinely useful behavioral detail beyond them: batch cap of 25 with per-item partial success where malformed/absent IDs land in failed[] with a reason and recovery hint rather than failing the batch, empty-result semantics, the fixed dataset options with defaults, and the derived reference build. It even states that mitochondrial IDs are not served.

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 the return payload, then the batching/failure semantics, then the data source. The long enumeration of returned fields is dense but informative; nearly every sentence earns its place, though the field list could be tightened slightly.

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?

With an output schema present, the description needn't explain return values, and it covers everything else an agent needs: batch limits, partial-failure handling, empty-result interpretation, dataset/reference-build coupling, and the coverage cross-check. Nothing material is missing for correct invocation.

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%, so the schema already documents variants, dataset, and reference_genome with their enums and defaults. The description restates the batch size and ID formats but adds no syntax or format detail beyond the schema, so the baseline 3 is appropriate when the schema carries the parameter burden.

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 (Fetch) and resource (full gnomAD population record for one or more variants) and enumerates the payload: allele counts/frequency per ancestry group, homozygote/hemizygote counts, quality flags, transcript consequence, in-silico scores, ClinVar significance. It also frames the scope ('the how common, is it benign answer in one call') and names the complementary sibling gnomad_get_coverage, so an agent can place it among the other gnomad_* tools.

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 concrete usage context: batching up to 25 IDs in one call, per-item partial success, and the key interpretive rule that an empty found[] means the variant is not in the chosen dataset — with the explicit instruction to pair with gnomad_get_coverage before concluding true absence. It names an alternative with its selecting condition, but does not explicitly exclude sibling tools like gnomad_search_clinvar for clinical-only lookups.

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

gnomad_list_gene_variantsgnomad-genetics-mcp-server: list gene variantsA
Read-onlyIdempotent
Inspect

List every gnomAD variant in a gene, transcript, or region with allele frequencies and predicted consequences, optionally filtered to one consequence class (lof, missense, synonymous, other) and/or a maximum allele frequency. A result too large to inline is staged on a DataCanvas table named gene_variants, returned as canvas_id and table_name beside an inline preview — call gnomad_dataframe_describe for its columns, then gnomad_dataframe_query to rank by AF, count by consequence, or group across every row rather than the preview. A result that fits inline stages no table unless canvas_id is supplied. When the canvas is disabled (CANVAS_PROVIDER_TYPE != duckdb) the tool returns a capped inline preview and the SQL path is unavailable. Supply exactly one of gene, transcript_id, or region. Echoes the effective dataset and build. Data source: gnomAD (Broad Institute) — https://gnomad.broadinstitute.org/

ParametersJSON Schema
NameRequiredDescriptionDefault
geneNoGene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mitochondrial genes (e.g. MT-TL1) are not served. Mutually exclusive with transcript_id and region; blank means omitted.
max_afNoKeep only variants with allele frequency ≤ this value (0–1). Variants with null AF are always kept.
regionNoGenomic region chrom-start-stop (1-based inclusive, e.g. 13-32315474-32400266): chromosome 1–22, X, or Y with an optional chr prefix (mitochondrial regions are not served), a span (stop − start) under 2,500,000 bp, and at most ~30,000 variants. Mutually exclusive with gene and transcript_id.
datasetNognomAD dataset: gnomad_r4 (GRCh38, default), gnomad_r3 (GRCh38), gnomad_r2_1 (GRCh37), exac (GRCh37). Echoed in output.
canvas_idNoOptional canvas ID from a prior call, to reuse the same canvas. When supplied, this call always writes its result to the gene_variants table on that canvas, replacing (not appending to) the previous one — even when the result fits inline; a result with no variants removes the table. Omit to stage on a fresh canvas only when the result is too large to inline.
transcript_idNoEnsembl transcript ID (e.g. ENST00000302118). Mutually exclusive with gene and region; blank means omitted.
reference_genomeNoReference build. Derived from dataset when omitted (v4/v3=GRCh38, v2.1/ExAC=GRCh37). If supplied it must match the dataset, or the call is rejected. Keep aligned with ensembl coordinates.
consequence_classNoKeep only variants in this consequence class. Omit to return all classes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
totalNoTotal matching variants, including any beyond the preview.
noticeNoGuidance when no variants matched, when the canvas is disabled and the preview is capped, and — when a table was staged — its name with the next steps: gnomad_dataframe_describe, then gnomad_dataframe_query.
datasetNoEffective gnomAD dataset.
previewNoInline preview rows — the immediate answer; every matching variant unless spilled.
spilledNoTrue when the result exceeded the inline preview budget, so the preview holds only the first rows and table_name holds them all.
canvas_idNoCanvas holding table_name (or the canvas_id you supplied) — pass it to gnomad_dataframe_describe, then gnomad_dataframe_query. Empty when this call used no canvas: the result fit inline and no canvas_id was supplied, or the canvas is disabled.
table_nameNoCanvas table this call staged (gene_variants), holding every matching variant — inspect it with gnomad_dataframe_describe, then query it with gnomad_dataframe_query. Empty when this call staged no table.
reference_genomeNoEffective reference build.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safe-read profile (readOnlyHint, idempotentHint, openWorldHint), and the description goes well beyond them: staging semantics (table named gene_variants, canvas_id + table_name plus inline preview), replacement-not-append behavior, table removal on empty results, no table when the result fits inline and no canvas_id is given, and capped preview degradation when canvas is disabled. This is exactly the extra behavioral context that agents need.

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?

Dense but front-loaded: purpose first, then routing, then edge cases and provenance. Every sentence carries information (canvas replacement, disabled-canvas fallback, dataset echoing). The long canvas passage is somewhat packed, which keeps it from a 5, but there is little filler.

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?

With an output schema present, return-value shape need not be explained, and the description still covers the non-obvious return facts (canvas_id/table_name, inline preview, echoed dataset/build). Combined with the schema's mutual-exclusion and format constraints, an agent has everything required to call this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds the cross-parameter constraint ("Supply exactly one of gene, transcript_id, or region") and the filter semantics for consequence_class and max_af that tie the parameters to the tool's purpose. It does not add syntax or format detail beyond the schema, so it clears the baseline but not by much.

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 opens with a specific verb and resource ("List every gnomAD variant in a gene, transcript, or region") plus the payload (allele frequencies and predicted consequences) and the filter scope. That is enough to separate it from gnomad_get_variant (single variant), gnomad_get_gene_constraint (aggregate constraint), and the dataframe siblings (post-processing).

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?

Strong routing guidance: it tells the agent to call gnomad_dataframe_describe then gnomad_dataframe_query for ranking/grouping across the full row set, and warns that the SQL path is unavailable when CANVAS_PROVIDER_TYPE != duckdb. It also spells out the exactly-one-selector rule. It stops short of naming retrieval alternatives (e.g. when to prefer gnomad_get_variant instead), so no explicit when-not for sibling selection.

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

gnomad_search_clinvargnomad-genetics-mcp-server: search clinvarA
Read-onlyIdempotent
Inspect

Search ClinVar (NCBI E-utilities) for a gene and return its classified variants — clinical significance, review status with a 0–4 star rating, associated conditions, molecular consequences, submission counts, and gnomAD-compatible identifiers (canonical SPDI, rsIDs, GRCh38 variant ID for gnomad_get_variant) — turning the variant-level significance gnomAD joins into a gene-panel curation view. Optionally filter by clinical_significance (e.g. pathogenic) and a minimum star rating. Each call returns one window of up to 500 ClinVar records: total_found is the ClinVar candidate count for the search terms, taken before the significance and star filters narrow each window, and next_offset continues through the rest via offset. A window too large to inline is staged on a DataCanvas table named clinvar_variants, returned as canvas_id and table_name beside an inline preview — call gnomad_dataframe_describe for its columns, then gnomad_dataframe_query to rank or count across the window. A window that fits inline stages no table unless canvas_id is supplied. Keyless, but honors NCBI_API_KEY for a higher rate limit. When the canvas is disabled the tool returns a capped inline preview. Credit: ClinVar, NCBI.

ParametersJSON Schema
NameRequiredDescriptionDefault
geneYesGene HGNC symbol (e.g. PCSK9). ClinVar indexes HGNC symbols only — Ensembl gene IDs (ENSG…) are not resolved here, unlike the other gnomAD tools; resolve one to its symbol via ensembl_lookup_gene.
limitNoClinVar records to fetch in this window (1–500). Counted before the clinical_significance and min_review_stars filters, so a window can return fewer rows.
offsetNoZero-based position of the first ClinVar record in this window. Pass next_offset from the previous call to continue.
canvas_idNoOptional canvas ID from a prior call, to reuse the same canvas. When supplied, each search writes its window to the clinvar_variants table on that canvas, replacing (not appending to) the previous one — even when the window fits inline; a window with no rows removes the table. An Ensembl gene ID searches nothing and leaves the canvas as it was. Omit to stage on a fresh canvas only when the window is too large to inline.
min_review_starsNoKeep only variants with at least this gold-star review rating (0–4).
clinical_significanceNoFilter by ClinVar clinical significance term (e.g. pathogenic, likely_pathogenic, uncertain significance), matched as whole words; underscores read as spaces. Blank means no filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
totalNoRows in this window that passed the filters, including any beyond the preview.
noticeNoGuidance on completeness (the offset that continues the list, or an offset past the end), no-match results, a capped preview when the canvas is disabled, the staged table with its next steps (gnomad_dataframe_describe, then gnomad_dataframe_query), and which identifier to pass to gnomad_get_variant.
previewNoInline preview rows — the immediate answer; the window's every row unless spilled.
spilledNoTrue when this window's rows exceeded the inline preview budget, so the preview holds only the first rows and table_name holds them all.
canvas_idNoCanvas holding table_name (or the canvas_id you supplied) — pass it to gnomad_dataframe_describe, then gnomad_dataframe_query. Empty when this call used no canvas: the window fit inline and no canvas_id was supplied, the gene was an Ensembl ID (nothing was searched), or the canvas is disabled.
truncatedNoTrue when ClinVar records remain past this window; continue with next_offset.
table_nameNoCanvas table this call staged (clinvar_variants), holding this window's rows — inspect it with gnomad_dataframe_describe, then query it with gnomad_dataframe_query. Empty when this call staged no table.
next_offsetNooffset for the next window; null when this window reaches the end.
total_foundNoClinVar records matching the gene and filter terms across every window, counted before the post-fetch significance and star filters.
unavailable_idsNoVariationIDs in this window that ClinVar returned no summary for, so they have no row; empty when none.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/open-world, but the description adds substantial unsurfaced behavior: window-vs-inline staging, canvas table replacement semantics (not appending), table removal on empty windows, the capped preview when canvas is disabled, and the NCBI_API_KEY rate-limit behavior. This is unusually rich disclosure beyond what annotations provide.

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 the core action and return shape, and every section carries information. However the description is very long and dense, with pagination, canvas, and credit details packed into single sprawling sentences that could be tightened.

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?

Covers the full agent workflow for a complex, multi-mode tool: filtering, pagination via next_offset, the canvas staging path and its follow-up tools, and graceful degradation. With an output schema present, no further return-value explanation is required.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds genuine interaction semantics — limit is counted before the significance/star filters so a window can return fewer rows, and filters narrow each window. It reinforces rather than merely restates the schema.

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 and resource (search ClinVar for a gene) and enumerates exactly what comes back — clinical significance, review stars, conditions, consequences, gnomAD-compatible IDs. It also distinguishes the tool from gnomad_get_variant by naming the latter as the consumer of the returned GRCh38 variant ID.

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 clear operational routing: use gnomad_dataframe_describe then gnomad_dataframe_query when a window is staged, and pass next_offset to continue pagination. It does not explicitly state when to prefer this over the sibling gnomad_list_gene_variants, so the when-not case is left to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedgnomad_dataframe_query13 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 100,
        +  "description": "Maximum rows on the page (1–500). A page also ends before its rows pass 10,000 characters of JSON.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Row offset of the page to return. Start at 0, then pass next_offset from the previous page.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / sql / description
        Previous value: -"Read-only SQL SELECT. Reference tables by the names the staging tool returned (e.g. gene_variants)."New value: +"Read-only SQL SELECT. Reference tables by the names the staging tool returned (e.g. gene_variants). Add an ORDER BY over a unique key when paging."
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "rows",
        -      "row_count",
        -      "columns",
        -      "truncated"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "rows",
        +      "columns",
        +      "offset",
        +      "returned",
        +      "total",
        +      "truncated",
        +      "next_offset"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `canvas_disabled`: DataCanvas is not enabled on this server instance. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `canvas_disabled`: DataCanvas is not enabled on this server instance. `row_too_large`: The first row of the requested page serializes to more than 10,000 characters of JSON, so no page can hold it. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "canvas_disabled"
        -]New value: +[
        +  "canvas_disabled",
        +  "row_too_large"
        +]
      • addedOutput schema / properties / next_offset
        Added value: +{
        +  "description": "offset for the next page; null when no page follows (end of the result, or the row cap reached).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "description": "Row offset this page starts at.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / returned
        Added value: +{
        +  "description": "Rows on this page — fewer than limit when the 10,000-character row budget or the end of the result ends it early.",
        +  "type": "number"
        +}
      • removedOutput schema / properties / row_count
        Removed value: -{
        -  "description": "Number of rows the query produced (materialized count).",
        -  "type": "number"
        -}
      • changedOutput schema / properties / rows / description
        Previous value: -"Result rows (dynamic columns per the SQL projection), capped at the canvas row limit."New value: +"This page of result rows, in result order."
      • addedOutput schema / properties / total
        Added value: +{
        +  "description": "Rows the SQL produced; null when the result exceeds the server row cap, whose later rows paging cannot reach.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when the result exceeded the row cap and was clipped."New value: +"True when result rows exist after this page, including rows past the row cap that next_offset cannot reach."
    • Changedgnomad_get_coverage5 fields changed
      • changedInput schema / properties / gene / description
        Previous value: -"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mutually exclusive with transcript_id and region; blank means omitted."New value: +"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mitochondrial genes (e.g. MT-TL1) are not served. Mutually exclusive with transcript_id and region; blank means omitted."
      • changedInput schema / properties / region / anyOf
        Previous value: -[
        -  {
        -    "const": "",
        -    "type": "string"
        -  },
        -  {
        -    "description": "Genomic region chrom-start-stop (1-based inclusive, e.g. 1-55039447-55064852).",
        -    "pattern": "^[0-9XYM]+-\\d+-\\d+$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Genomic region chrom-start-stop (1-based inclusive, e.g. 1-55039447-55064852) on chromosome 1–22, X, or Y, optional chr prefix.",
        +    "pattern": "^(?:chr)?[0-9A-Z]+-\\d+-\\d+$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / region / description
        Previous value: -"Genomic region chrom-start-stop (1-based inclusive, e.g. 1-55039447-55064852). Mutually exclusive with gene and transcript_id."New value: +"Genomic region chrom-start-stop (1-based inclusive, e.g. 1-55039447-55064852): chromosome 1–22, X, or Y with an optional chr prefix (mitochondrial regions are not served) and a span (stop − start) under 2,500,000 bp. Mutually exclusive with gene and transcript_id."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_target`: Not exactly one of gene, transcript_id, or region was supplied. `incoherent_build`: reference_genome was supplied but does not match the dataset. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_target`: Not exactly one of gene, transcript_id, or region was supplied. `incoherent_build`: reference_genome was supplied but does not match the dataset. `invalid_region`: The region names a chromosome outside 1–22, X, Y, or breaks the coordinate bounds. `region_too_large`: The region spans 2,500,000 bp or more, beyond what gnomAD summarizes at once. `mitochondrial_unsupported`: The gene, transcript, or region is on the mitochondrial chromosome (M or MT). `graphql_error`: gnomAD rejected the coverage query with a GraphQL error. `upstream_unavailable`: gnomAD stayed unavailable or throttled through every retry. `upstream_timeout`: Every attempt to reach gnomAD timed out. `upstream_access`: gnomAD refused the request (access denied). `invalid_upstream_response`: gnomAD kept answering with a response that failed validation. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_target",
        -  "incoherent_build"
        -]New value: +[
        +  "invalid_target",
        +  "incoherent_build",
        +  "invalid_region",
        +  "region_too_large",
        +  "mitochondrial_unsupported",
        +  "graphql_error",
        +  "upstream_unavailable",
        +  "upstream_timeout",
        +  "upstream_access",
        +  "invalid_upstream_response"
        +]
    • Changedgnomad_get_gene_constraint6 fields changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "gene_id",
        -      "symbol",
        -      "dataset",
        -      "reference_genome",
        -      "pli",
        -      "oe_lof",
        -      "oe_lof_lower",
        -      "oe_lof_upper",
        -      "oe_mis",
        -      "oe_syn",
        -      "lof_z",
        -      "mis_z",
        -      "syn_z",
        -      "obs_lof",
        -      "exp_lof",
        -      "obs_mis",
        -      "exp_mis",
        -      "obs_syn",
        -      "exp_syn",
        -      "constraint_flags"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "gene_id",
        +      "symbol",
        +      "dataset",
        +      "reference_genome",
        +      "constraint_release",
        +      "pli",
        +      "oe_lof",
        +      "oe_lof_lower",
        +      "oe_lof_upper",
        +      "oe_mis",
        +      "oe_syn",
        +      "lof_z",
        +      "mis_z",
        +      "syn_z",
        +      "obs_lof",
        +      "exp_lof",
        +      "obs_mis",
        +      "exp_mis",
        +      "obs_syn",
        +      "exp_syn",
        +      "constraint_flags"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • changedOutput schema / properties / constraint_flags / description
        Previous value: -"Constraint caveat flags (e.g. beta/experimental notes for v4)."New value: +"Caveat flags gnomAD attaches to the gene’s constraint (e.g. no_exp_lof, mis_too_many, syn_outlier); empty when none, and always empty on exac, where ExAC publishes no flags."
      • addedOutput schema / properties / constraint_release
        Added value: +{
        +  "description": "Constraint release the metrics come from: gnomAD v4.1.2 for gnomad_r4 and gnomad_r3 (gnomAD publishes no v3 constraint, so gnomad_r3 serves the GRCh38 table), gnomAD v2.1.1 for gnomad_r2_1, ExAC r0.3 for exac.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `gene_not_found`: No gene matched the symbol or Ensembl ID in this build. `incoherent_build`: reference_genome was supplied but does not match the dataset. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `gene_not_found`: No gene matched the symbol or Ensembl ID in this build. `incoherent_build`: reference_genome was supplied but does not match the dataset. `invalid_constraint_data`: gnomAD returned constraint metrics outside their valid ranges, such as a pLI above 1. `graphql_error`: gnomAD rejected the constraint query with a GraphQL error. `upstream_unavailable`: gnomAD stayed unavailable or throttled through every retry. `upstream_timeout`: Every attempt to reach gnomAD timed out. `upstream_access`: gnomAD refused the request (access denied). `invalid_upstream_response`: gnomAD kept answering with a response that failed validation. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "gene_not_found",
        -  "incoherent_build"
        -]New value: +[
        +  "gene_not_found",
        +  "incoherent_build",
        +  "invalid_constraint_data",
        +  "graphql_error",
        +  "upstream_unavailable",
        +  "upstream_timeout",
        +  "upstream_access",
        +  "invalid_upstream_response"
        +]
      • changedOutput schema / properties / oe_lof_upper / description
        Previous value: -"LOEUF (oe_lof_upper) — the headline intolerance metric. Null when unavailable."New value: +"LOEUF (oe_lof_upper) — the headline intolerance metric; gnomAD recommends < 0.45 on v4.1.2 and < 0.35 on v2.1.1 to call a gene LoF-intolerant. Null when unavailable, and always null on exac."
    • Changedgnomad_get_variant13 fields changed
      • changedInput schema / properties / variants / items / description
        Previous value: -"Variant ID — chrom-pos-ref-alt (1-based, e.g. 1-55051215-G-GA) or an rsID (rs11591147). Obtain a variantId from ensembl_predict_variant or a VCF. Malformed IDs are reported per-item in failed[], not rejected wholesale."New value: +"Variant ID — chrom-pos-ref-alt (1-based, e.g. 1-55051215-G-GA) on chromosome 1–22, X, or Y with an optional chr prefix, or an rsID (rs11591147). Mitochondrial IDs (M, MT, chrM) are not served. Obtain a variantId from ensembl_predict_variant or a VCF. Malformed IDs are reported per-item in failed[], not rejected wholesale."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `incoherent_build`: reference_genome was supplied but does not match the dataset. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `incoherent_build`: reference_genome was supplied but does not match the dataset. `invalid_variant_id`: A variant ID is outside the chrom-pos-ref-alt or rsID grammar; reported per item in failed[]. `variant_not_found`: A well-formed ID is absent from the requested dataset; reported per item in failed[]. `mitochondrial_unsupported`: A variant ID names the mitochondrial chromosome (M, MT, or chrM); reported per item in failed[]. `ambiguous_rsid`: An rsID maps to more than one variant in the dataset; reported per item in failed[]. `graphql_error`: gnomAD rejected the lookup for one ID with a GraphQL error; reported per item in failed[]. `upstream_build_mismatch`: gnomAD answered one ID with a variant on a different reference build; reported per item in failed[]. `upstream_unavailable`: gnomAD stayed unavailable or throttled through every retry for one ID; reported per item in failed[]. `upstream_timeout`: Every attempt to reach gnomAD for one ID timed out; reported per item in failed[]. `upstream_access`: gnomAD refused the request for one ID (access denied); reported per item in failed[]. `invalid_upstream_response`: gnomAD kept answering one ID with a response that failed validation; reported per item in failed[]. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "incoherent_build"
        -]New value: +[
        +  "incoherent_build",
        +  "invalid_variant_id",
        +  "variant_not_found",
        +  "mitochondrial_unsupported",
        +  "ambiguous_rsid",
        +  "graphql_error",
        +  "upstream_build_mismatch",
        +  "upstream_unavailable",
        +  "upstream_timeout",
        +  "upstream_access",
        +  "invalid_upstream_response"
        +]
      • changedOutput schema / properties / failed / description
        Previous value: -"Per-item failures: malformed IDs, variants absent from the dataset, or upstream errors."New value: +"Per-item failures, in input order: malformed IDs, variants absent from the dataset, or upstream errors — each with its reason and recovery hint."
      • changedOutput schema / properties / failed / items / description
        Previous value: -"One failed input ID and why it failed."New value: +"One failed input ID, why it failed, and what to do next."
      • changedOutput schema / properties / failed / items / properties / error / description
        Previous value: -"What went wrong and how to resolve it."New value: +"What went wrong for this ID."
      • addedOutput schema / properties / failed / items / properties / reason
        Added value: +{
        +  "description": "Why this ID failed — a reason declared in this tool's error contract. Branch on it rather than on the message.",
        +  "enum": [
        +    "invalid_variant_id",
        +    "variant_not_found",
        +    "mitochondrial_unsupported",
        +    "ambiguous_rsid",
        +    "graphql_error",
        +    "upstream_build_mismatch",
        +    "upstream_unavailable",
        +    "upstream_timeout",
        +    "upstream_access",
        +    "invalid_upstream_response"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / failed / items / properties / recovery
        Added value: +{
        +  "description": "The next step for this ID — the recovery hint declared for its reason.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / failed / items / required
        Previous value: -[
        -  "variant",
        -  "error"
        -]New value: +[
        +  "variant",
        +  "error",
        +  "reason",
        +  "recovery"
        +]
      • addedOutput schema / properties / found / items / properties / in_silico / items / properties / annotation
        Added value: +{
        +  "description": "Text gnomAD attaches to the score — on gnomad_r3, the SpliceAI event (e.g. acceptor_gain, no_consequence). Holds the raw text when value is null for lack of a number; null for a plain score.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / found / items / properties / in_silico / items / properties / id / description
        Previous value: -"Predictor name (e.g. revel_max, cadd, spliceai_ds_max)."New value: +"Predictor name. Ids vary by dataset — gnomad_r4: cadd, revel_max, spliceai_ds_max, pangolin_largest_ds, phylop, sift_max, polyphen_max; gnomad_r3: cadd, revel, splice_ai, primate_ai; gnomad_r2_1 and exac carry none."
      • changedOutput schema / properties / found / items / properties / in_silico / items / properties / value / description
        Previous value: -"Predictor score; null when not provided for this variant."New value: +"Predictor score; null when not provided for this variant, or when gnomAD gave text with no number (the text is then in annotation)."
      • changedOutput schema / properties / found / items / properties / in_silico / items / required
        Previous value: -[
        -  "id",
        -  "value"
        -]New value: +[
        +  "id",
        +  "value",
        +  "annotation"
        +]
    • Changedgnomad_list_gene_variants5 fields changed
      • changedInput schema / properties / gene / description
        Previous value: -"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mutually exclusive with transcript_id and region; blank means omitted."New value: +"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mitochondrial genes (e.g. MT-TL1) are not served. Mutually exclusive with transcript_id and region; blank means omitted."
      • changedInput schema / properties / region / anyOf
        Previous value: -[
        -  {
        -    "const": "",
        -    "type": "string"
        -  },
        -  {
        -    "description": "Genomic region chrom-start-stop (1-based inclusive, e.g. 13-32315474-32400266).",
        -    "pattern": "^[0-9XYM]+-\\d+-\\d+$",
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Genomic region chrom-start-stop (1-based inclusive, e.g. 13-32315474-32400266) on chromosome 1–22, X, or Y, optional chr prefix.",
        +    "pattern": "^(?:chr)?[0-9A-Z]+-\\d+-\\d+$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / region / description
        Previous value: -"Genomic region chrom-start-stop (1-based inclusive). Mutually exclusive with gene and transcript_id."New value: +"Genomic region chrom-start-stop (1-based inclusive, e.g. 13-32315474-32400266): chromosome 1–22, X, or Y with an optional chr prefix (mitochondrial regions are not served), a span (stop − start) under 2,500,000 bp, and at most ~30,000 variants. Mutually exclusive with gene and transcript_id."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_target`: Not exactly one of gene, transcript_id, or region was supplied. `incoherent_build`: reference_genome was supplied but does not match the dataset. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_target`: Not exactly one of gene, transcript_id, or region was supplied. `incoherent_build`: reference_genome was supplied but does not match the dataset. `invalid_region`: The region names a chromosome outside 1–22, X, Y, or breaks the coordinate bounds. `region_too_large`: The region spans 2,500,000 bp or more, or holds more variants (~30,000) than gnomAD lists at once. `mitochondrial_unsupported`: The gene, transcript, or region is on the mitochondrial chromosome (M or MT). `graphql_error`: gnomAD rejected the variant-list query with a GraphQL error. `upstream_unavailable`: gnomAD stayed unavailable or throttled through every retry. `upstream_timeout`: Every attempt to reach gnomAD timed out. `upstream_access`: gnomAD refused the request (access denied). `invalid_upstream_response`: gnomAD kept answering with a response that failed validation. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_target",
        -  "incoherent_build"
        -]New value: +[
        +  "invalid_target",
        +  "incoherent_build",
        +  "invalid_region",
        +  "region_too_large",
        +  "mitochondrial_unsupported",
        +  "graphql_error",
        +  "upstream_unavailable",
        +  "upstream_timeout",
        +  "upstream_access",
        +  "invalid_upstream_response"
        +]
    • Changedgnomad_search_clinvar2 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: NCBI E-utilities is unreachable, failing, or rate-limiting after retries. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: NCBI E-utilities is unreachable, failing, or rate-limiting after retries. `upstream_timeout`: Every attempt to reach NCBI E-utilities timed out. `upstream_access`: NCBI E-utilities refused the request (access denied). `invalid_upstream_response`: NCBI E-utilities kept answering with a response that failed validation. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "upstream_unavailable"
        -]New value: +[
        +  "upstream_unavailable",
        +  "upstream_timeout",
        +  "upstream_access",
        +  "invalid_upstream_response"
        +]
  2. 3 tool updates
    • Changedgnomad_get_coverage5 fields changed
      • addedInput schema / properties / gene / anyOf
        Added value: +[
        +  {
        +    "description": "Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene.",
        +    "minLength": 2,
        +    "type": "string"
        +  },
        +  {
        +    "description": "Blank — the gene is treated as omitted.",
        +    "maxLength": 0,
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / gene / description
        Previous value: -"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene."New value: +"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mutually exclusive with transcript_id and region; blank means omitted."
      • removedInput schema / properties / gene / minLength
        Removed value: -2
      • removedInput schema / properties / gene / type
        Removed value: -"string"
      • changedInput schema / properties / transcript_id / description
        Previous value: -"Ensembl transcript ID (e.g. ENST00000302118). Mutually exclusive with gene and region."New value: +"Ensembl transcript ID (e.g. ENST00000302118). Mutually exclusive with gene and region; blank means omitted."
    • Changedgnomad_list_gene_variants12 fields changed
      • changedInput schema / properties / canvas_id / description
        Previous value: -"Optional canvas ID from a prior call, to reuse the same canvas. Reusing it REPLACES (overwrites) the gene_variants table with this call's results — it does not append. Omit to start a fresh canvas; the response returns a new one."New value: +"Optional canvas ID from a prior call, to reuse the same canvas. When supplied, this call always writes its result to the gene_variants table on that canvas, replacing (not appending to) the previous one — even when the result fits inline; a result with no variants removes the table. Omit to stage on a fresh canvas only when the result is too large to inline."
      • addedInput schema / properties / gene / anyOf
        Added value: +[
        +  {
        +    "description": "Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene.",
        +    "minLength": 2,
        +    "type": "string"
        +  },
        +  {
        +    "description": "Blank — the gene is treated as omitted.",
        +    "maxLength": 0,
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / gene / description
        Previous value: -"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene."New value: +"Gene — HGNC symbol (e.g. PCSK9) or Ensembl gene ID (e.g. ENSG00000169174). Obtain a stable ID from ensembl_lookup_gene. Mutually exclusive with transcript_id and region; blank means omitted."
      • removedInput schema / properties / gene / minLength
        Removed value: -2
      • removedInput schema / properties / gene / type
        Removed value: -"string"
      • changedInput schema / properties / transcript_id / description
        Previous value: -"Ensembl transcript ID (e.g. ENST00000302118). Mutually exclusive with gene and region."New value: +"Ensembl transcript ID (e.g. ENST00000302118). Mutually exclusive with gene and region; blank means omitted."
      • changedOutput schema / properties / canvas_id / description
        Previous value: -"Canvas ID — pass to gnomad_dataframe_query. Empty string when canvas is disabled."New value: +"Canvas holding table_name (or the canvas_id you supplied) — pass it to gnomad_dataframe_describe, then gnomad_dataframe_query. Empty when this call used no canvas: the result fit inline and no canvas_id was supplied, or the canvas is disabled."
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when no variants matched, or when the canvas is disabled and the preview is capped."New value: +"Guidance when no variants matched, when the canvas is disabled and the preview is capped, and — when a table was staged — its name with the next steps: gnomad_dataframe_describe, then gnomad_dataframe_query."
      • changedOutput schema / properties / preview / description
        Previous value: -"Inline preview rows — the immediate answer."New value: +"Inline preview rows — the immediate answer; every matching variant unless spilled."
      • changedOutput schema / properties / spilled / description
        Previous value: -"True when the full result was staged on the canvas beyond the preview."New value: +"True when the result exceeded the inline preview budget, so the preview holds only the first rows and table_name holds them all."
      • changedOutput schema / properties / table_name / description
        Previous value: -"Canvas table holding the full set (gene_variants); empty when not spilled."New value: +"Canvas table this call staged (gene_variants), holding every matching variant — inspect it with gnomad_dataframe_describe, then query it with gnomad_dataframe_query. Empty when this call staged no table."
      • changedOutput schema / properties / total / description
        Previous value: -"Total matching variants (staged row count when spilled, else preview length)."New value: +"Total matching variants, including any beyond the preview."
    • Changedgnomad_search_clinvar21 fields changed
      • changedInput schema / properties / canvas_id / description
        Previous value: -"Optional canvas ID from a prior call, to reuse the same canvas. Reusing it REPLACES (overwrites) the clinvar_variants table with this call's results — it does not append. Omit to start a fresh canvas; the response returns a new one."New value: +"Optional canvas ID from a prior call, to reuse the same canvas. When supplied, each search writes its window to the clinvar_variants table on that canvas, replacing (not appending to) the previous one — even when the window fits inline; a window with no rows removes the table. An Ensembl gene ID searches nothing and leaves the canvas as it was. Omit to stage on a fresh canvas only when the window is too large to inline."
      • changedInput schema / properties / clinical_significance / description
        Previous value: -"Filter by ClinVar clinical significance term (e.g. pathogenic, likely_pathogenic, benign)."New value: +"Filter by ClinVar clinical significance term (e.g. pathogenic, likely_pathogenic, uncertain significance), matched as whole words; underscores read as spaces. Blank means no filter."
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 500,
        +  "description": "ClinVar records to fetch in this window (1–500). Counted before the clinical_significance and min_review_stars filters, so a window can return fewer rows.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Zero-based position of the first ClinVar record in this window. Pass next_offset from the previous call to continue.",
        +  "maximum": 2147483647,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "preview",
        -      "canvas_id",
        -      "table_name",
        -      "spilled",
        -      "total"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "preview",
        +      "canvas_id",
        +      "table_name",
        +      "spilled",
        +      "total",
        +      "total_found",
        +      "truncated",
        +      "next_offset",
        +      "unavailable_ids"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • changedOutput schema / properties / canvas_id / description
        Previous value: -"Canvas ID — pass to gnomad_dataframe_query. Empty string when canvas is disabled."New value: +"Canvas holding table_name (or the canvas_id you supplied) — pass it to gnomad_dataframe_describe, then gnomad_dataframe_query. Empty when this call used no canvas: the window fit inline and no canvas_id was supplied, the gene was an Ensembl ID (nothing was searched), or the canvas is disabled."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `ncbi_unreachable`: NCBI E-utilities is unreachable or rate-limited. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `upstream_unavailable`: NCBI E-utilities is unreachable, failing, or rate-limiting after retries. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "ncbi_unreachable"
        -]New value: +[
        +  "upstream_unavailable"
        +]
      • addedOutput schema / properties / next_offset
        Added value: +{
        +  "description": "offset for the next window; null when this window reaches the end.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when no ClinVar records matched, or when the canvas is disabled and the preview is capped."New value: +"Guidance on completeness (the offset that continues the list, or an offset past the end), no-match results, a capped preview when the canvas is disabled, the staged table with its next steps (gnomad_dataframe_describe, then gnomad_dataframe_query), and which identifier to pass to gnomad_get_variant."
      • changedOutput schema / properties / preview / description
        Previous value: -"Inline preview rows — the immediate answer."New value: +"Inline preview rows — the immediate answer; the window's every row unless spilled."
      • addedOutput schema / properties / preview / items / properties / canonical_spdi
        Added value: +{
        +  "description": "Canonical SPDI of the variant (GRCh38, e.g. NC_000001.11:55039973:G:T); null for multi-allele records, CNVs, and records without one.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / preview / items / properties / grch38_variant_id
        Added value: +{
        +  "description": "gnomAD variant ID (chrom-pos-ref-alt, GRCh38) for gnomad_get_variant with the GRCh38 datasets (gnomad_r4, gnomad_r3). Set for SNVs, MNVs, and delins; null for deletions, insertions, duplications, mitochondrial variants, and multi-allele records.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / preview / items / properties / rsids
        Added value: +{
        +  "description": "dbSNP rsIDs (e.g. rs11591147), semicolon-joined; empty when none. One rsID can match several gnomAD variants, so prefer grch38_variant_id for gnomad_get_variant.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / preview / items / required
        Previous value: -[
        -  "clinvar_variation_id",
        -  "accession",
        -  "title",
        -  "obj_type",
        -  "clinical_significance",
        -  "review_status",
        -  "gold_stars",
        -  "last_evaluated",
        -  "molecular_consequences",
        -  "protein_change",
        -  "conditions",
        -  "submission_count"
        -]New value: +[
        +  "clinvar_variation_id",
        +  "accession",
        +  "title",
        +  "obj_type",
        +  "clinical_significance",
        +  "review_status",
        +  "gold_stars",
        +  "last_evaluated",
        +  "molecular_consequences",
        +  "protein_change",
        +  "conditions",
        +  "submission_count",
        +  "canonical_spdi",
        +  "rsids",
        +  "grch38_variant_id"
        +]
      • changedOutput schema / properties / spilled / description
        Previous value: -"True when the full result was staged on the canvas beyond the preview."New value: +"True when this window's rows exceeded the inline preview budget, so the preview holds only the first rows and table_name holds them all."
      • changedOutput schema / properties / table_name / description
        Previous value: -"Canvas table holding the full set (clinvar_variants); empty when not spilled."New value: +"Canvas table this call staged (clinvar_variants), holding this window's rows — inspect it with gnomad_dataframe_describe, then query it with gnomad_dataframe_query. Empty when this call staged no table."
      • changedOutput schema / properties / total / description
        Previous value: -"Total matching ClinVar records (staged row count when spilled, else preview length)."New value: +"Rows in this window that passed the filters, including any beyond the preview."
      • addedOutput schema / properties / total_found
        Added value: +{
        +  "description": "ClinVar records matching the gene and filter terms across every window, counted before the post-fetch significance and star filters.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "description": "True when ClinVar records remain past this window; continue with next_offset.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / unavailable_ids
        Added value: +{
        +  "description": "VariationIDs in this window that ClinVar returned no summary for, so they have no row; empty when none.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  3. 7 tool updates
    • Changedgnomad_dataframe_describe2 fields changed
      • removedInput schema / properties / canvas_id / minLength
        Removed value: -1
      • addedInput schema / properties / canvas_id / pattern
        Added value: +"^[A-Za-z0-9_-]{10}$"
    • Changedgnomad_dataframe_query2 fields changed
      • removedInput schema / properties / canvas_id / minLength
        Removed value: -1
      • addedInput schema / properties / canvas_id / pattern
        Added value: +"^[A-Za-z0-9_-]{10}$"
    • Changedgnomad_get_coverage22 fields changed
      • removedOutput schema / properties / summaries / items / properties / fraction_over_1 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_1 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_10 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_10 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_100 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_100 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_15 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_15 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_20 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_20 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_25 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_25 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_30 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_30 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_5 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_5 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / fraction_over_50 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / fraction_over_50 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / mean_depth / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / mean_depth / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / summaries / items / properties / median_depth / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summaries / items / properties / median_depth / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changedgnomad_get_gene_constraint6 fields changed
      • removedOutput schema / properties / lof_z / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / lof_z / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / mis_z / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / mis_z / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / syn_z / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / syn_z / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changedgnomad_get_variant17 fields changed
      • removedOutput schema / properties / found / items / properties / af / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / af / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / found / items / properties / clinvar / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "Joined ClinVar significance from gnomAD. Null when the variant has no ClinVar entry.",
        -    "properties": {
        -      "clinical_significance": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "ClinVar clinical significance (e.g. Pathogenic, Likely benign); null when no entry."
        -      },
        -      "clinvar_variation_id": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "ClinVar VariationID."
        -      },
        -      "gold_stars": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "ClinVar 0–4 star review rating."
        -      },
        -      "review_status": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "ClinVar review status text."
        -      }
        -    },
        -    "required": [
        -      "clinical_significance",
        -      "review_status",
        -      "gold_stars",
        -      "clinvar_variation_id"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "Joined ClinVar significance from gnomAD. Null when the variant has no ClinVar entry.",
        +    "properties": {
        +      "clinical_significance": {
        +        "description": "ClinVar clinical significance (e.g. Pathogenic, Likely benign); null when no entry.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "clinvar_variation_id": {
        +        "description": "ClinVar VariationID.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "gold_stars": {
        +        "description": "ClinVar 0–4 star review rating.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "review_status": {
        +        "description": "ClinVar review status text.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "clinical_significance",
        +      "review_status",
        +      "gold_stars",
        +      "clinvar_variation_id"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / found / items / properties / consequence / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / consequence / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / found / items / properties / gene_symbol / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / gene_symbol / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / found / items / properties / hemizygote_count / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / hemizygote_count / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / found / items / properties / in_silico / items / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / in_silico / items / properties / value / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / found / items / properties / populations / items / properties / af / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / populations / items / properties / af / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / found / items / properties / populations / items / properties / hemizygote_count / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / populations / items / properties / hemizygote_count / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / found / items / properties / transcript_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / found / items / properties / transcript_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedgnomad_list_gene_variants5 fields changed
      • addedInput schema / properties / canvas_id / pattern
        Added value: +"^[A-Za-z0-9_-]{10}$"
      • removedOutput schema / properties / preview / items / properties / af / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / preview / items / properties / af / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / preview / items / properties / consequence / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / preview / items / properties / consequence / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedgnomad_search_clinvar7 fields changed
      • addedInput schema / properties / canvas_id / pattern
        Added value: +"^[A-Za-z0-9_-]{10}$"
      • removedOutput schema / properties / preview / items / properties / clinical_significance / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / preview / items / properties / clinical_significance / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / preview / items / properties / last_evaluated / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / preview / items / properties / last_evaluated / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / preview / items / properties / review_status / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / preview / items / properties / review_status / type
        Added value: +[
        +  "string",
        +  "null"
        +]
  4. 2 tool updates
    • Changedgnomad_get_gene_constraint19 fields changed
      • changedOutput schema / properties / exp_lof / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / exp_lof / description
        Previous value: -"Expected LoF variant count. Null when unavailable."New value: +"Non-negative expected LoF variant count. Null when unavailable."
      • changedOutput schema / properties / exp_mis / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / exp_mis / description
        Previous value: -"Expected missense count. Null when unavailable."New value: +"Non-negative expected missense count. Null when unavailable."
      • changedOutput schema / properties / exp_syn / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / exp_syn / description
        Previous value: -"Expected synonymous count. Null when unavailable."New value: +"Non-negative expected synonymous count. Null when unavailable."
      • changedOutput schema / properties / obs_lof / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / obs_lof / description
        Previous value: -"Observed LoF variant count. Null when unavailable."New value: +"Non-negative observed LoF variant count. Null when unavailable."
      • changedOutput schema / properties / obs_mis / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / obs_mis / description
        Previous value: -"Observed missense count. Null when unavailable."New value: +"Non-negative observed missense count. Null when unavailable."
      • changedOutput schema / properties / obs_syn / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / obs_syn / description
        Previous value: -"Observed synonymous count. Null when unavailable."New value: +"Non-negative observed synonymous count. Null when unavailable."
      • changedOutput schema / properties / oe_lof / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / oe_lof / description
        Previous value: -"Observed/expected LoF ratio. Null when unavailable."New value: +"Non-negative observed/expected LoF ratio. Null when unavailable."
      • changedOutput schema / properties / oe_lof_lower / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / oe_lof_upper / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / oe_mis / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / oe_syn / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / pli / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedgnomad_get_variant4 fields changed
      • addedOutput schema / properties / failed / items / properties / candidates
        Added value: +{
        +  "description": "Concrete variant IDs to retry when an rsID is ambiguous.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / found / items / properties / clinvar_unavailable
        Added value: +{
        +  "description": "True when the optional ClinVar resolver failed; false when no entry exists.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / found / items / required
        Previous value: -[
        -  "variant_id",
        -  "rsids",
        -  "reference_genome",
        -  "dataset",
        -  "ac",
        -  "an",
        -  "af",
        -  "homozygote_count",
        -  "hemizygote_count",
        -  "populations",
        -  "source",
        -  "flags",
        -  "consequence",
        -  "transcript_id",
        -  "gene_symbol",
        -  "in_silico",
        -  "clinvar"
        -]New value: +[
        +  "variant_id",
        +  "rsids",
        +  "reference_genome",
        +  "dataset",
        +  "ac",
        +  "an",
        +  "af",
        +  "homozygote_count",
        +  "hemizygote_count",
        +  "populations",
        +  "source",
        +  "flags",
        +  "consequence",
        +  "transcript_id",
        +  "gene_symbol",
        +  "in_silico",
        +  "clinvar",
        +  "clinvar_unavailable"
        +]
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Non-fatal notice when optional ClinVar annotation was unavailable.",
        +  "type": "string"
        +}
  5. 7 tool updates
    • First observedgnomad_dataframe_describe
    • First observedgnomad_dataframe_query
    • First observedgnomad_get_coverage
    • First observedgnomad_get_gene_constraint
    • First observedgnomad_get_variant
    • First observedgnomad_list_gene_variants
    • First observedgnomad_search_clinvar

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to query genetic variant data, gene constraints, and population genetics information from the gnomAD (Genome Aggregation Database) through its GraphQL API. Supports searching for genes and variants, retrieving constraint scores, analyzing population frequencies, and accessing genomic coverage data.
    9
    10
    -
  • F
    license
    A
    quality
    A
    maintenance
    Enables querying rare-variant, gene-based association results across ~1.2M individuals from 10 global biobanks, supporting phenome-wide scans, replication screens across ancestries, and candidate list evaluation for 44 harmonized traits.
    4
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides a programmatic interface to the Genome Aggregation Database (gnomAD) API across versions v2.1.1, v3.1.2, and v4.1.0. It enables users to query gene metadata, variant information, population frequencies, and ClinVar data through a unified schema.
    12
    6
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.