Skip to main content
Glama

Folklore Clinical Variant Interpretation MCP

Find literature for a germline variant

search_variant_literature
Read-onlyIdempotent

Resolve one GRCh38 germline variant and retrieve publications from the PubMed-derived genetics corpus. Exact variant mentions rank ahead of broader gene associations. Returns match types, source links, corpus provenance and retrieval time.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of publications to return, from 1 to 25.
queryYesOne germline nuclear SNV or simple indel to resolve before retrieving its literature; this is a variant identifier, not a natural-language question. Accepts a returned Folklore canonical_key in GRCh38:chrN:position:REF:ALT form.
assemblyNoReference genome assembly. Folklore currently accepts GRCh38 only.GRCh38
questionNoOptional natural-language focus applied after the variant is resolved, such as a condition or evidence question; do not put the variant identifier here.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • removedOutput schema / additionalProperties
      Removed value: -false
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "contract_version": {
      +        "const": "2",
      +        "default": "2",
      +        "title": "Contract Version",
      +        "type": "string"
      +      },
      +      "literature": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/LiteratureAuthorityResponse"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "status": {
      +        "enum": [
      +          "resolved",
      +          "ambiguous",
      +          "not_found",
      +          "invalid_request",
      +          "unsupported",
      +          "resolution_unavailable"
      +        ],
      +        "title": "Status",
      +        "type": "string"
      +      },
      +      "variant_result": {
      +        "additionalProperties": true,
      +        "title": "Variant Result",
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "variant_result",
      +      "literature"
      +    ],
      +    "title": "PublicVariantLiteratureResponse",
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "adapter_error": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "code": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "message": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "retryable": {
      +                "type": "boolean"
      +              }
      +            },
      +            "required": [
      +              "code",
      +              "message",
      +              "retryable"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "contract_version": {
      +        "const": "2",
      +        "type": "string"
      +      },
      +      "record_url": {
      +        "format": "uri",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "result": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": true,
      +            "properties": {
      +              "search_contract_version": {
      +                "const": "1.0",
      +                "type": "string"
      +              },
      +              "status": {
      +                "enum": [
      +                  "resolved",
      +                  "ambiguous",
      +                  "not_found",
      +                  "invalid_request",
      +                  "unsupported",
      +                  "resolution_unavailable"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "search_contract_version",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "contract_version",
      +      "record_url",
      +      "result",
      +      "adapter_error"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties
      Removed value: -{
      -  "contract_version": {
      -    "const": "1.0",
      -    "default": "1.0",
      -    "title": "Contract Version",
      -    "type": "string"
      -  },
      -  "literature": {
      -    "anyOf": [
      -      {
      -        "$ref": "#/$defs/LiteratureAuthorityResponse"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ]
      -  },
      -  "status": {
      -    "enum": [
      -      "resolved",
      -      "ambiguous",
      -      "not_found",
      -      "invalid_request",
      -      "unsupported",
      -      "resolution_unavailable"
      -    ],
      -    "title": "Status",
      -    "type": "string"
      -  },
      -  "usage_boundary": {
      -    "additionalProperties": true,
      -    "title": "Usage Boundary",
      -    "type": "object"
      -  },
      -  "variant_result": {
      -    "additionalProperties": true,
      -    "title": "Variant Result",
      -    "type": "object"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "status",
      -  "variant_result",
      -  "literature",
      -  "usage_boundary"
      -]
    • removedOutput schema / title
      Removed value: -"PublicVariantLiteratureResponse"
  2. Changed4 schema fields changed
    • addedInput schema / properties / assembly / description
      Added value: +"Reference genome assembly. Folklore currently accepts GRCh38 only."
    • addedInput schema / properties / limit / description
      Added value: +"Maximum number of publications to return, from 1 to 25."
    • addedInput schema / properties / query / description
      Added value: +"One germline nuclear SNV or simple indel to resolve before retrieving its literature; this is a variant identifier, not a natural-language question. Accepts a returned Folklore canonical_key in GRCh38:chrN:position:REF:ALT form."
    • addedInput schema / properties / question / description
      Added value: +"Optional natural-language focus applied after the variant is resolved, such as a condition or evidence question; do not put the variant identifier here."
  3. Changed1 schema field changed
    • changedOutput schema / $defs / CorpusProvenance / properties / source / const
      Previous value: -"PubMed-derived Helena genetics corpus"New value: +"Helena Literature Corpus canonical works"
  4. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's real contribution is the ranking behavior ('exact variant mentions rank ahead of broader gene associations') and the return payload shape. That is meaningful context beyond the structured fields, though it doesn't discuss limits like corpus coverage or rate behavior.

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?

Three compact sentences, front-loaded with the core action and scope. The final sentence enumerating return values is slightly redundant given an output schema exists, but it is short and does not bloat the definition.

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

Completeness4/5

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

With an output schema present, the description needn't detail return fields, and the full-coverage input schema covers parameters. It is complete enough to call correctly; the only gap is the absence of explicit routing guidance versus the gene- and corpus-level literature siblings.

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 every parameter including the canonical_key format, limit bounds, and the 'do not put the variant identifier here' guard on question. The description adds no syntax or format detail beyond what the schema supplies, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('resolve one GRCh38 germline variant and retrieve publications'), plus the corpora scope ('PubMed-derived genetics corpus'), which separates it from the gene-level search siblings. It stops short of explicitly naming the sibling it replaces (e.g., search_gene_literature), so sibling differentiation is implicit rather than stated.

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

Usage Guidelines3/5

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

The description implies usage ('Resolve one GRCh38 germline variant') and the schema reinforces the 'variant identifier, not a natural-language question' rule, but there is no explicit when-to-use/when-not or named alternative among the sibling tools. The agent must infer that gene-level queries belong to search_gene_literature.

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.