Skip to main content
Glama

gnomad-genetics-mcp-server

gnomad-genetics-mcp-server: search clinvar

gnomad_search_clinvar
Read-onlyIdempotent

Search ClinVar (NCBI E-utilities) for a gene and return its classified variants — the germline clinical significance with its review status, 0–4 star rating, and conditions; any somatic oncogenicity or clinical-impact classification with its own review status and tumor types; molecular consequences, submission counts, and gnomAD-compatible identifiers (canonical SPDI, rsIDs, and a GRCh38 variant ID for gnomad_get_variant, derived from the SPDI or filled from gnomAD's own ClinVar mapping) — turning the variant-level significance gnomAD joins into a gene-panel curation view. Optionally filter by germline clinical_significance (e.g. pathogenic) and a minimum germline star rating. Each call returns one window of up to limit ClinVar records (default 10): total_found is the ClinVar count for the search terms (the match count for a mapped significance term alone, a candidate count once min_review_stars or any other term applies), 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. Credit: ClinVar, NCBI.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "gene": "<gene>"
    },
    "name": "gnomad_search_clinvar"
  }
}

Input 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. A mapped clinical_significance term alone narrows the search to matching records, so its windows are full; min_review_stars and any other significance term are also applied after the fetch, so their windows can return fewer rows. Default 10; a value above 1,500 is clamped to 1,500, with a notice.
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 whose germline classification has at least this gold-star rating (0–4). ClinVar's review-status search also matches the review status of a somatic classification, and those records are dropped after the fetch, so a window can return fewer rows than limit.
clinical_significanceNoFilter by ClinVar germline classification, case-insensitive, matched as whole words; underscores read as spaces. Somatic oncogenicity and clinical-impact classifications are never matched. pathogenic (Pathogenic and Likely pathogenic, combined and low-penetrance forms included), likely pathogenic, uncertain significance, vus (Uncertain significance plus VUS-high, VUS-mid, and VUS-low), likely benign, benign (Benign and Likely benign), and conflicting search ClinVar's germline classification index, so on their own their windows hold matching records only. Any other term (e.g. risk factor) narrows a text search, and its windows can return fewer rows than limit. Blank means no filter.

Output Schema

NameRequiredDescriptionDefault
geneNoThe gene searched, as given.
errorNoPresent when the call failed. Absent on success.
totalNoRows in this window that passed the filters, including any beyond the preview.
noticeNoGuidance on a clamped limit, completeness (the offset that continues the list, or an offset past the end), no-match results, the staged table with its next steps (gnomad_dataframe_describe, then gnomad_dataframe_query), gnomAD's ClinVar mapping when it could not fill missing grch38_variant_id values, and which identifier to pass to gnomad_get_variant.
filtersNoRow filters applied to this window; offset and limit are not filters.
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 by the search before the post-fetch filters: the match count for a mapped significance term alone, a candidate count once min_review_stars or any other term applies.
unavailable_idsNoVariationIDs in this window that ClinVar returned no summary for, so they have no row; empty when none.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • changedInput schema / properties / clinical_significance / description
      Previous value: -"Filter by ClinVar germline classification, case-insensitive, matched as whole words; underscores read as spaces. pathogenic (Pathogenic and Likely pathogenic, combined and low-penetrance forms included), likely pathogenic, uncertain significance, vus (Uncertain significance plus VUS-high, VUS-mid, and VUS-low), likely benign, benign (Benign and Likely benign), and conflicting search ClinVar's classification index, so their windows hold matching records only. Any other term (e.g. risk factor) narrows a text search, and its windows can return fewer rows than limit. Blank means no filter."New value: +"Filter by ClinVar germline classification, case-insensitive, matched as whole words; underscores read as spaces. Somatic oncogenicity and clinical-impact classifications are never matched. pathogenic (Pathogenic and Likely pathogenic, combined and low-penetrance forms included), likely pathogenic, uncertain significance, vus (Uncertain significance plus VUS-high, VUS-mid, and VUS-low), likely benign, benign (Benign and Likely benign), and conflicting search ClinVar's germline classification index, so on their own their windows hold matching records only. Any other term (e.g. risk factor) narrows a text search, and its windows can return fewer rows than limit. Blank means no filter."
    • changedInput schema / properties / limit / description
      Previous value: -"ClinVar records to fetch in this window. A mapped clinical_significance term and min_review_stars narrow the search itself, so their windows hold matching records; any other significance term is filtered after the fetch, so its windows can return fewer rows. Default 10; a value above 1,500 is clamped to 1,500, with a notice."New value: +"ClinVar records to fetch in this window. A mapped clinical_significance term alone narrows the search to matching records, so its windows are full; min_review_stars and any other significance term are also applied after the fetch, so their windows can return fewer rows. Default 10; a value above 1,500 is clamped to 1,500, with a notice."
    • changedInput schema / properties / min_review_stars / description
      Previous value: -"Keep only variants with at least this gold-star review rating (0–4)."New value: +"Keep only variants whose germline classification has at least this gold-star rating (0–4). ClinVar's review-status search also matches the review status of a somatic classification, and those records are dropped after the fetch, so a window can return fewer rows than limit."
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance on a clamped limit, completeness (the offset that continues the list, or an offset past the end), no-match results, the staged table with its next steps (gnomad_dataframe_describe, then gnomad_dataframe_query), and which identifier to pass to gnomad_get_variant."New value: +"Guidance on a clamped limit, completeness (the offset that continues the list, or an offset past the end), no-match results, the staged table with its next steps (gnomad_dataframe_describe, then gnomad_dataframe_query), gnomAD's ClinVar mapping when it could not fill missing grch38_variant_id values, and which identifier to pass to gnomad_get_variant."
    • addedOutput schema / properties / preview / items / properties / clinical_impact_classification
      Added value: +{
      +  "description": "Somatic clinical-impact classification, an AMP/ASCO/CAP tier (e.g. Tier I - Strong); null when none.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / preview / items / properties / clinical_impact_conditions
      Added value: +{
      +  "description": "Tumor types the clinical-impact classification applies to, semicolon-joined; empty when none.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / preview / items / properties / clinical_impact_last_evaluated
      Added value: +{
      +  "description": "Date the clinical-impact classification was last evaluated; null when unknown.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / preview / items / properties / clinical_impact_review_status
      Added value: +{
      +  "description": "Review status of the clinical-impact classification; null when none. No star rating is derived from it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / preview / items / properties / clinical_significance / description
      Previous value: -"Germline classification (e.g. Pathogenic); null when none."New value: +"Germline classification (e.g. Pathogenic); null when none, as on a record ClinVar classifies only for somatic use (see oncogenicity_classification and clinical_impact_classification)."
    • changedOutput schema / properties / preview / items / properties / conditions / description
      Previous value: -"Associated conditions/traits, semicolon-joined."New value: +"Conditions the germline classification names, semicolon-joined; empty when none."
    • changedOutput schema / properties / preview / items / properties / gold_stars / description
      Previous value: -"0–4 star review rating derived from review status."New value: +"0–4 star rating derived from the germline review status; 0 when there is none."
    • changedOutput schema / properties / preview / items / properties / grch38_variant_id / description
      Previous value: -"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."New value: +"gnomAD variant ID (chrom-pos-ref-alt, GRCh38) for gnomad_get_variant with a GRCh38 dataset (gnomad_r4, gnomad_r3, or one of their subsets). Derived from the canonical SPDI for SNVs, MNVs, and delins; for deletions, insertions, and duplications, taken from gnomAD's ClinVar mapping by VariationID. Most of those indel IDs are absent from gnomAD's callsets, so gnomad_get_variant answers variant_not_found: absence evidence to pair with gnomad_get_coverage. Null for mitochondrial variants, multi-allele, copy-number, and imprecise structural records, and for records newer than gnomAD's ClinVar release, which lags NCBI's."
    • changedOutput schema / properties / preview / items / properties / last_evaluated / description
      Previous value: -"Date the classification was last evaluated; null when unknown."New value: +"Date the germline classification was last evaluated; null when unknown."
    • addedOutput schema / properties / preview / items / properties / oncogenicity_classification
      Added value: +{
      +  "description": "Somatic oncogenicity classification (e.g. Likely oncogenic, Oncogenic); null when none.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / preview / items / properties / oncogenicity_conditions
      Added value: +{
      +  "description": "Tumor types the oncogenicity classification applies to, semicolon-joined; empty when none.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / preview / items / properties / oncogenicity_last_evaluated
      Added value: +{
      +  "description": "Date the oncogenicity classification was last evaluated; null when unknown.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / preview / items / properties / oncogenicity_review_status
      Added value: +{
      +  "description": "Review status of the oncogenicity classification; null when none. No star rating is derived from it.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / preview / items / properties / review_status / description
      Previous value: -"ClinVar review-status text; null when none."New value: +"Review status of the germline classification; null when none."
    • 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",
      -  "canonical_spdi",
      -  "rsids",
      -  "grch38_variant_id"
      -]New value: +[
      +  "clinvar_variation_id",
      +  "accession",
      +  "title",
      +  "obj_type",
      +  "clinical_significance",
      +  "review_status",
      +  "gold_stars",
      +  "last_evaluated",
      +  "molecular_consequences",
      +  "protein_change",
      +  "conditions",
      +  "oncogenicity_classification",
      +  "oncogenicity_review_status",
      +  "oncogenicity_last_evaluated",
      +  "oncogenicity_conditions",
      +  "clinical_impact_classification",
      +  "clinical_impact_review_status",
      +  "clinical_impact_last_evaluated",
      +  "clinical_impact_conditions",
      +  "submission_count",
      +  "canonical_spdi",
      +  "rsids",
      +  "grch38_variant_id"
      +]
    • changedOutput schema / properties / total_found / description
      Previous value: -"ClinVar records matching the gene and filter terms across every window, counted by the search before the post-fetch filters: the match count for a mapped significance term, a candidate count for any other."New value: +"ClinVar records matching the gene and filter terms across every window, counted by the search before the post-fetch filters: the match count for a mapped significance term alone, a candidate count once min_review_stars or any other term applies."
  2. Changed11 schema fields changed
    • changedInput schema / properties / clinical_significance / description
      Previous 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."New value: +"Filter by ClinVar germline classification, case-insensitive, matched as whole words; underscores read as spaces. pathogenic (Pathogenic and Likely pathogenic, combined and low-penetrance forms included), likely pathogenic, uncertain significance, vus (Uncertain significance plus VUS-high, VUS-mid, and VUS-low), likely benign, benign (Benign and Likely benign), and conflicting search ClinVar's classification index, so their windows hold matching records only. Any other term (e.g. risk factor) narrows a text search, and its windows can return fewer rows than limit. Blank means no filter."
    • changedInput schema / properties / limit / default
      Previous value: -500New value: +10
    • changedInput schema / properties / limit / description
      Previous value: -"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."New value: +"ClinVar records to fetch in this window. A mapped clinical_significance term and min_review_stars narrow the search itself, so their windows hold matching records; any other significance term is filtered after the fetch, so its windows can return fewer rows. Default 10; a value above 1,500 is clamped to 1,500, with a notice."
    • removedInput schema / properties / limit / maximum
      Removed value: -500
    • addedInput schema / properties / limit / multipleOf
      Added value: +1
    • changedInput schema / properties / limit / type
      Previous value: -"integer"New value: +"number"
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "preview",
      -      "canvas_id",
      -      "table_name",
      -      "spilled",
      -      "total",
      -      "total_found",
      -      "truncated",
      -      "next_offset",
      -      "unavailable_ids"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "gene",
      +      "filters",
      +      "preview",
      +      "canvas_id",
      +      "table_name",
      +      "spilled",
      +      "total",
      +      "total_found",
      +      "truncated",
      +      "next_offset",
      +      "unavailable_ids"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / filters
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Row filters applied to this window; offset and limit are not filters.",
      +  "properties": {
      +    "clinical_significance": {
      +      "description": "The clinical_significance filter as applied — quotes dropped, underscores read as spaces, trimmed, lowercased; null when omitted or blank.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "min_review_stars": {
      +      "description": "The min_review_stars floor; null when omitted.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "clinical_significance",
      +    "min_review_stars"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / gene
      Added value: +{
      +  "description": "The gene searched, as given.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / notice / description
      Previous 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."New value: +"Guidance on a clamped limit, completeness (the offset that continues the list, or an offset past the end), no-match results, 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 / total_found / description
      Previous value: -"ClinVar records matching the gene and filter terms across every window, counted before the post-fetch significance and star filters."New value: +"ClinVar records matching the gene and filter terms across every window, counted by the search before the post-fetch filters: the match count for a mapped significance term, a candidate count for any other."
  3. Changed1 schema field 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. `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."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`: NCBI attempts timed out or the shared 45 s search-and-summary budget expired. `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."
  4. Changed2 schema 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"
      +]
  5. Changed21 schema 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"
      +}
  6. Changed7 schema 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"
      +]
  7. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, and open-world, but the description adds substantial behavior beyond them: the 1,500-record clamp with a notice, that total_found is a match count for a mapped significance term but only a candidate count once post-fetch filters apply, that windows may return fewer rows than limit, that canvas writes replace rather than append and an empty window removes the table, and that NCBI_API_KEY raises the rate limit.

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

Conciseness3/5

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

The purpose and pagination rules are front-loaded, and no sentence is pure filler, but the central sentence is a single ~90-word run-on built from em-dashes and nested parentheticals that is hard to parse on first read. The canvas-staging rules are split across two sentences in a way that makes the 'when is a table created' condition harder to extract than necessary.

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 six-parameter, paginated, canvas-staging search tool this is complete: it covers what is returned, how to page, how filtering interacts with counts, when a DataCanvas table appears and how to query it, and the keyless/rate-limit caveat. An output schema exists, yet the description still gives enough shape that an agent can plan a follow-up call without inspecting it.

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 each parameter already carries a detailed description covering the HGNC-symbol constraint, the clamping behavior, the offset/next_offset continuation, and the significance whole-word matching rules. The prose largely restates those same facts (default 10, star rating range, underscore-as-space matching), so it adds little param-level meaning the schema does not already supply — baseline 3.

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 ('Search ClinVar (NCBI E-utilities) for a gene') and enumerates exactly what comes back: germline significance with review stars, somatic oncogenicity, molecular consequences, and gnomAD-compatible identifiers. It also implicitly separates itself from gnomad_get_variant and gnomad_list_gene_variants by framing the output as a 'gene-panel curation view' rather than a single-variant lookup.

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?

Routing is explicit throughout: use gnomad_dataframe_describe then gnomad_dataframe_query when a window is staged on a canvas, use gnomad_get_variant with the returned GRCh38 variant ID, and use ensembl_lookup_gene to resolve an Ensembl ID because ClinVar indexes HGNC symbols only. It also states the condition that selects the alternative path ('a window that fits inline stages no table unless canvas_id is supplied').

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.