Generated banner for Folklore Variant Evidence
Generated logo for Folklore Variant Evidence

Folklore Variant Evidence

K-DenseCommunityCreated by Helena BioinformaticsDistributed by K-Dense

  • Skill
  • Tool integration
  • Science and research
  • MIT
  • No issues found

From the author

Retrieves ClinGen gene-disease validity assertions for a public gene or disease, and reviews source-linked public evidence and literature for one supported GRCh38 germline nuclear SNV or simple indel through Folklore Clinical Variant Interpretation MCP. Used when a scientific agent must branch deterministically on resolved, ambiguous, not-found, invalid, unsupported, or unavailable variant outcomes; chain a resolved public variant into related literature or publication details; or preserve evidence provenance without accepting patient, phenotype, family, segregation, or private case data.
— the description by Helena Bioinformatics

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The Folklore Variant Evidence skill provides a structured interface for scientific agents to query public genomic variant data and gene-disease associations. By utilizing the Folklore Clinical Variant Interpretation MCP, the skill enables the retrieval of ACMG/AMP decision support, provenance, and source-linked literature for GRCh38 germline nuclear SNVs and simple indels. It is designed to maintain strict boundaries by excluding patient-specific data, ensuring that all retrieved information remains focused on public scientific knowledge for professional review.

What it does

  • Retrieves structured public variant evidence and ACMG/AMP decision support for GRCh38 variants.
  • Fetches ClinGen gene-disease validity assertions for specific genes or diseases.
  • Links resolved variants to relevant scientific literature and publication details.
  • Performs semantic corpus searches for public scientific literature.
  • Enforces strict input validation to prevent the processing of patient-specific or private data.
  • Provides deterministic branching logic based on variant resolution status.

When to use it

  • When you need to retrieve public, source-linked evidence for a specific germline variant.
  • When investigating gene-disease validity assertions using ClinGen data.
  • When chaining a resolved variant to its associated scientific literature.
  • When a scientific agent requires a deterministic, structured response for variant interpretation tasks.

Advantages

  • Provides standardized, source-linked provenance for variant-level interpretations.
  • Ensures data privacy by explicitly prohibiting patient-specific or clinical record inputs.
  • Supports deterministic workflow branching based on clear status codes like resolved, ambiguous, or not_found.
  • Facilitates integration with broader scientific literature via PMID-linked publication details.

Usage examples

“Retrieve evidence for the variant rs80357914 using the GRCh38 assembly.”
The agent calls search_variant_evidence, processes the returned status, and presents the structured interpretation or handles ambiguity if multiple candidates are returned.
“Find gene-disease associations for the gene BRCA1.”
The agent uses get_gene_disease_associations to return the validity assertions, source URLs, and evidence assessments from the local ClinGen snapshot.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/k-dense-ai/folklore-variant-evidence/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip folklore-variant-evidence.zip -d .agents/skills

Documentation by Helena Bioinformatics

Folklore Variant Evidence

Use Folklore Clinical Variant Interpretation MCP to retrieve structured public variant evidence, automated variant-level ACMG/AMP decision support, provenance, and source-linked literature for professional review. Keep the workflow limited to public identifiers and preserve every explicit outcome state. Adapter 1.5.0 also provides ClinGen Gene-Disease Validity assertions; source coverage is bounded, not every known association.

Folklore Clinical Variant Interpretation MCP is published by Helena Bioinformatics. Its hosted endpoint is:

https://api.helena.bio/folklore/v1/mcp

No account or API key is required. The public Apache-2.0 adapter and contract are available at https://github.com/helena-bioinformatics/folklore-mcp.

Minimal connection example

A host without native MCP support can make the same public JSON-RPC call:

curl --silent --show-error --fail-with-body --max-time 60 \
  -X POST https://api.helena.bio/folklore/v1/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: tools/call' \
  -H 'Mcp-Name: search_variant_evidence' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}},"name":"search_variant_evidence","arguments":{"assembly":"GRCh38","query":"rs80357914"}}}'

The routing headers must match the JSON-RPC method and tool name. A successful HTTP response is not sufficient: inspect JSON-RPC error, then result.structuredContent.adapter_error, then this tool's result.structuredContent.result.status. Other tools use different response shapes; use the contract table.

Inspect the returned outcome before continuing. This example can return ambiguous with multiple candidates: stop and request an unambiguous public variant notation instead of selecting a candidate automatically.

Select the right skill

Use this skill when the task is one public variant to structured Folklore evidence, explicit resolution-state handling, variant-linked literature, or ClinGen gene-to-disease/disease-to-gene assertions.

  • Use database-lookup for broad direct queries across ClinVar, dbSNP, gnomAD, Ensembl VEP, COSMIC, or multiple databases.

  • Use genomic-coordinates first when the assembly, coordinate convention, contig name, or variant representation is uncertain.

  • Do not use this skill for VCF annotation, batch processing, somatic variants, structural variants, polygenic scores, or patient-specific interpretation.

Folklore Clinical Variant Interpretation MCP complements those skills with one source-linked public evidence contract. It does not replace direct database review or qualified clinical judgment.

Enforce the input boundary

Before a variant tool call:

  1. Extract exactly one public variant identifier or notation.

  2. Require GRCh38 and a germline nuclear SNV or simple insertion/deletion shorter than 50 base pairs. An unsupported assembly may be rejected by the input schema before any scientific unsupported status exists.

  3. Remove or refuse patient names, case identifiers, phenotypes, family history, segregation evidence, clinical records, uploaded files, and other private or patient-specific context.

  4. If the task depends on patient context, stop and explain that Folklore Clinical Variant Interpretation MCP does not accept or evaluate it.

  5. Never transform a patient-specific request into a public variant query while implying that the result answers the patient-specific question.

Accepted public variant forms include genomic coordinates, genomic/coding/ protein HGVS, SPDI, rsID, or a canonical_key returned by Folklore Clinical Variant Interpretation MCP.

Verify the live tool catalog

Connect to the hosted endpoint and call tools/list. Verify the available tools instead of relying on model memory. The documented public catalog contains:

  • search_variant_evidence

  • search_variant_literature

  • get_publication_details

  • search_literature_corpus

  • get_gene_disease_associations

  • search_disease_genes

The separate seventh tool support_helena is not scientific evidence; use it only when explicitly requested.

If discovery or a tool call fails, preserve the failure as an availability problem. Do not reinterpret it as lack of scientific evidence.

Read the public MCP contract before composing tool calls or interpreting response states.

Retrieve gene-disease assertions

Use get_gene_disease_associations for one exact gene symbol or HGNC identifier, or search_disease_genes for an exact MONDO identifier or public disease-name substring. Both accept limit (default 20, 1–50) and offset (default 0, 0–1000). See the reference for request examples. This is a separate source lookup and requires no variant input or assembly.

Preserve each returned disease identity, inheritance, evidence assessment, source URL, date, source.version and source.snapshotSha256. This is a local ClinGen snapshot, not a guarantee of the latest ClinGen release. Follow pagination.nextOffset while it is present; preserve pagination-ceiling warnings. An empty page after the total has been passed does not mean the initial query had no matches. Do not combine distinct diseases or silently choose among name matches. Gene-disease validity does not classify a particular variant. A not_found response means no matching assertion in the available source, not no association. No patient, phenotype, family, segregation, private case data or sequencing files may be sent. Qualified professional review remains required.

Run the variant-evidence workflow

1. Resolve and retrieve evidence

Call search_variant_evidence with:

assembly: GRCh38
query: <one public variant identifier or notation>

Do not add phenotype, disease, patient, family, or treatment context to this call. Preserve the returned contract fields, source links, limitations, and usage boundary.

2. Branch on the returned status

Read transport/JSON-RPC errors and adapter_error first. For search_variant_evidence, let envelope = result.structuredContent; only if envelope.result is non-null, branch on envelope.result.status. An invalid_arguments adapter error is distinct from scientific invalid_request. Preserve isError and any typed failure, including resolution_unavailable. Treat the status as a control-flow value, not prose:

StatusRequired action
resolvedReuse the returned canonical_key; review the structured interpretation, provenance, source links, and limitations.
ambiguousShow the returned candidates and ask for an explicit public variant selection. Never choose a candidate automatically.
not_foundReport that no result was found within this service and query scope. Do not claim universal absence.
invalid_requestReport the validation problem and request a corrected public variant. Do not silently reinterpret the input.
unsupportedState the relevant service boundary and stop. Do not force the query into a supported form.
resolution_unavailableReport a temporary resolution or availability failure. Do not treat it as evidence absence.

Only a resolved result may proceed automatically into a variant-linked literature workflow. Its canonical key is envelope.result.identity.canonical_key. If envelope.result.interpretation.status is unavailable, preserve its typed error; identity resolution has succeeded, but classification has not. Do not read or invent a classification for that outcome.

3. Review the evidence without overclaiming

For a resolved result:

  • Present the returned variant identity and canonical_key.

  • Preserve the automated variant-level ACMG/AMP decision-support result exactly as returned.

  • Cite the returned public sources and provenance.

  • Keep submitted ClinVar assertions separate from Folklore's automated result, as required by the upstream interpretation guidance. If they disagree, report each assertion with its source/date and preserve the disagreement; do not present a merged consensus classification.

  • Separate returned facts from the agent's synthesis.

  • State that qualified professional review is required.

  • Do not turn the result into a diagnosis, individual risk estimate, treatment recommendation, or standalone clinical report.

Chain into literature

Variant-linked literature

After a resolved evidence call, pass the returned canonical_key to search_variant_literature. Keep assembly as GRCh38. An optional question may narrow the literature focus, but it must remain a public scientific question and must not contain patient context.

Distinguish each result's match type:

  • exact_variant: direct match to the resolved variant

  • variant_alias: match through a reported alias

  • gene_association: broader gene-level association, not variant-specific proof

Literature associations do not alter the returned ACMG/AMP classification.

Publication details

Call get_publication_details only with a PMID returned by the literature tools. Preserve PubMed URLs, DOI/PMCID fields when present, retraction status, and the distinction between gene mentions and variant mentions.

Use search_literature_corpus for a public natural-language scientific question or for discovery by publication identifier, gene, variant, phenotype, HPO, or OMIM concept. Treat results as source-linked candidates for professional review. A zero-result response means no result was returned for that bounded query, not that no relevant publication exists anywhere.

The query is 3–200 characters, with limit 1–25 and sort set to relevance, newest, or oldest. For another page, reuse the returned opaque next_cursor with the same query and sort; do not construct an offset. Keep match_types and article_entities distinct from variant-literature match types. Report semantic_index_used and semantic_degraded_reason; a returned lexical match does not prove semantic retrieval worked. Preserve additional retrieval metadata returned by the live service.

Do not place patient information into a corpus query, even if the query is not variant-specific.

Report a reproducible result

Include:

  1. The exact public query and GRCh38 assembly.

  2. The returned status and, if resolved, the canonical_key.

  3. The structured evidence or literature result without changing its meaning.

  4. Source links and publication identifiers.

  5. Match type for literature results.

  6. Access date and any availability limitation.

  7. This boundary statement:

This is public, variant-level decision support for qualified professional review. It does not evaluate patient, phenotype, family, segregation, or private case data and is not a diagnosis or treatment recommendation.

Falsifiable smoke test

Use the public rsID rs80357914 to test ambiguity handling:

Call search_variant_evidence with assembly GRCh38 and query rs80357914. If the
result is ambiguous, list the returned candidates and stop for explicit
selection. Do not select a candidate or call downstream literature tools.

The ambiguity branch passes only if an ambiguous response causes the workflow to stop without automatic candidate selection. If the live response changes, record the actual status; a resolved response does not test ambiguity handling.

On 2026-09-30, live discovery reported adapter 1.5.0 and protocol 2026-07-28. The rsID example returned ambiguous; a separate public HGVS query resolved and was chained through its returned key to literature and a returned PMID. Corpus cursor pagination and gene-disease offset pagination were exercised. These are dated protocol checks, not validation of clinical accuracy. See the reference for exact response shapes and source/live differences.

Official references

Files

references/mcp-contract.md

Folklore Clinical Variant Interpretation MCP public contract

Use this reference when constructing calls or interpreting public results. Reviewed 2026-09-30 against adapter 1.5.0, official source commit fef7220d66f99c3c021f8eee1cdd6b8ea4b0a64b, and live discovery/calls. Discover the live schemas rather than assuming the published adapter source and deployment are identical.

Connection

  • Endpoint: https://api.helena.bio/folklore/v1/mcp

  • Authentication: none

  • Transport: stateless Streamable HTTP

  • Publisher: Helena Bioinformatics

  • Registry identity: io.github.helena-bioinformatics/folklore

  • Reviewed modern protocol: 2026-07-28

Verify tools with tools/list at call time. Do not infer tool availability from this skill alone.

For direct JSON-RPC POST requests, use Content-Type: application/json and Accept: application/json, text/event-stream. Send MCP-Protocol-Version plus Mcp-Method equal to the body method; for tools/call, send Mcp-Name equal to params.name. Include the protocol version and client capabilities in params._meta, as in the skill's curl example. The discovery request is:

curl --silent --show-error --fail-with-body --max-time 60 \
  -X POST https://api.helena.bio/folklore/v1/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: tools/list' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'

server/discover is an optional preflight using the same pattern with that method in both header and body. It reports supported versions and server metadata, without a stateful initialization exchange. This modern recipe does not establish compatibility with every legacy MCP client.

Read the correct response envelope

First handle HTTP failure or a JSON-RPC error; then inspect MCP result.isError and result.structuredContent. Call that structured object s below. Handle any non-null s.adapter_error before reading scientific fields; preserve its code, message and retryable. Invalid inputs can fail validation before reaching a scientific status. Retry only a retryable failure, with bounded backoff and any Retry-After guidance. A live HTTP 429 with JSON-RPC code -32029 was observed; there is no verified universal request quota to hardcode.

ToolSuccessful structured content
search_variant_evidences.result.status; identity at s.result.identity; interpretation at s.result.interpretation; outer record_url, usage_boundary, adapter_error
search_variant_literatureDirect s.status, s.variant_result, and nullable s.literature; no extra s.result wrapper
get_publication_detailss.publication and s.usage_boundary; no scientific status field
search_literature_corpuss.results, returned_count, pagination and retrieval metadata; no scientific status field
Both gene-disease toolsDirect s.status (ok or not_found), associations, pagination, source, warnings, usage_boundary

The evidence envelope has contract_version: "1" and its scientific result has search_contract_version: "1.0". Literature/details/corpus use contract_version: "1.0"; gene-disease uses camel-case contractVersion: "1.0". Do not impose the evidence envelope on the other tools. Adapter failures for literature/details/corpus can use the evidence-style envelope with result: null; gene-disease failures contain adapter_error and usage_boundary directly. Unrecognized status values or missing required fields are a contract problem, not an empty result.

Preserve complete structured content. The evidence and literature text fallbacks are summaries and need not contain all provenance or candidate data.

search_variant_evidence

Required input:

assembly: GRCh38
query: <one public germline nuclear SNV or simple indel>

query is 1–512 characters. assembly defaults to GRCh38, but send it explicitly for reproducibility. The schema forbids additional arguments. The query may be a coordinate, genomic/coding/protein HGVS, SPDI, rsID, or a returned canonical_key in this form:

GRCh38:chrN:position:REF:ALT

The six public outcome states are:

  • resolved

  • ambiguous

  • not_found

  • invalid_request

  • unsupported

  • resolution_unavailable

Do not collapse these states. In particular, never convert ambiguous into resolved, and never convert resolution_unavailable into not_found. For ambiguity, preserve total_candidate_count and candidates_truncated; the candidate list may contain only the first ten. For resolution, reuse s.result.identity.canonical_key. Check s.result.interpretation.status: success permits reading the returned classification, whereas unavailable requires preserving its error despite a resolved identity.

search_variant_literature

Use only after resolution when composing an automatic workflow:

assembly: GRCh38
query: <returned canonical_key>
question: <optional public scientific focus>
limit: <1 to 25>

The optional question is 3–500 characters, limit defaults to 10, and there is no cursor/offset argument for this tool. The response preserves the variant result at s.variant_result and returns literature at s.literature only when variant resolution permits it. Preserve candidate_count, aliases, corpus provenance and limitations; limit does not make a page exhaustive. Publication match types are exact_variant, variant_alias, and gene_association.

get_publication_details

Input {"pmid":"<returned PMID>"}, a string of 1–12 digits without a PMID: prefix. Preserve publication.is_retracted, bibliographic metadata, source URLs, gene mentions, and variant mentions. A publication_not_found adapter error means no record in this service's corpus, not that the PMID does not exist in PubMed. A missing abstract or full-text URL is not a missing publication.

search_literature_corpus

Use for source-linked scientific-literature discovery with a natural-language question, publication identifier, gene, variant, phenotype, HPO, or OMIM concept. Arguments are query (3–200 characters), limit (1–25, default 20), sort (relevance, newest, oldest; default relevance) and optional cursor. Keep all queries public and nonsensitive.

Use has_more and the opaque next_cursor for continuation with the same query and sort order. Stop if continuation is absent; report a contradictory pagination state rather than inventing a cursor. Keep result match_types, scores and article_entities with their source/normalization metadata; these are retrieval signals, not pathogenicity probabilities. Corpus match types are not restricted to the three variant-literature types above.

Report semantic_index_used and any semantic_degraded_reason. The live service also advertised and returned graph_used, graph_version, and graph_degraded_reason on the review date, although the pinned public adapter's corpus model did not declare them. Retain such fields as returned metadata; do not assume their presence or infer graph/semantic success from HTTP 200 alone.

Gene-disease assertions in adapter 1.5.0

Request examples (not captured scientific results):

{"name":"get_gene_disease_associations","arguments":{"gene":"BRCA1","limit":20,"offset":0}}
{"name":"search_disease_genes","arguments":{"disease":"Marfan","limit":20,"offset":0}}

The gene lookup accepts an exact gene symbol or HGNC identifier (1–64 characters). Disease lookup accepts an exact MONDO: plus seven digits or a public disease-name substring (3–160 characters). Both have limit 1–50 (default 20) and offset 0–1000 (default 0). Preserve distinct disease matches and follow pagination.nextOffset while present. Do not invent offsets beyond 1000. When the ceiling prevents completion, nextOffset can be null while rows remain; preserve the warning and compare offset + len(associations) with total before calling retrieval complete. An out-of-range page can be empty with status: ok when total > 0; not_found means total == 0.

Successful structured output directly carries query, associations, pagination, source, warnings and usage_boundary. Read JSON-RPC and adapter errors before interpreting output. The source is ClinGen Gene-Disease Validity; preserve assertion-specific inheritance, assessment, source links and dates. Missing source values stay unavailable. No result does not establish no association, and association validity is not variant pathogenicity.

Record source.version, source.snapshotSha256, and source.downloadUrl. These describe the deployed local snapshot and do not guarantee the newest ClinGen release. Preserve source assertions separately, including disputed assessments; avoid collapsing them into a single gene-wide classification.

Reviewed sources and execution scope

Live read-only public requests verified discovery, ambiguity, resolved identity, variant-linked literature, publication details, both gene-disease tools, and corpus/gene pagination. Eleven successful captured responses passed validation against their live tool output schemas; invalid-argument calls returned typed adapter errors separately. The unavailable/degraded branches and the gene-disease pagination ceiling were source-reviewed, not forced in the live service. These checks establish observed protocol behavior, not clinical accuracy, source completeness, or host UI support.

Interpretation boundary

  • Folklore Clinical Variant Interpretation MCP accepts no patient, phenotype, family, segregation, or private case data.

  • Results support qualified professional review.

  • Results are not a diagnosis or treatment recommendation.

  • Literature associations do not alter an ACMG/AMP classification.

  • An empty bounded result does not establish universal absence.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an API key

The author says: Requires network access to api.helena.bio (stateless Streamable HTTP MCP, no credentials) and a host supporting its advertised protocol, or curl for direct JSON-RPC POST requests.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Helena Bioinformatics
Publisher
K-Dense (Community)
Distributed by
K-Dense
Source
K-Dense-AI/scientific-agent-skills · skills/folklore-variant-evidence · commit a25cf9e
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE.md)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Helena Bioinformatics or K-Dense.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download folklore-variant-evidence.zip