Skip to main content
Glama

Folklore Clinical Variant Interpretation MCP

Server Details

ACMG/AMP germline variant classification, gene profiles, disease associations and literature.

Ownership verified
Status
Healthy
Uptime
99.7% over 76 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
helena-bioinformatics/folklore-mcp
GitHub Stars
1
Server Listing
Folklore Clinical Variant Interpretation MCP

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation3/5

The gene-resolution/profile/section trio and variant classification are clearly distinct, but the surface contains two confusable clusters: search_literature_corpus explicitly accepts gene and variant queries that duplicate search_gene_literature and search_variant_literature, and get_gene_disease_associations mirrors search_disease_genes with opposite traversal direction. The descriptions do explain the snapshot-vs-live and direction distinctions, so an attentive agent can disambiguate, but the boundaries are not self-evident from names alone.

Naming Consistency4/5

Almost all tools follow a clean snake_case verb_noun pattern (resolve_gene, get_gene_profile, get_gene_section, search_*_literature, classify_germline_variant). The main inconsistency is conceptual rather than syntactic: the same gene-disease validity resource is exposed as get_gene_disease_associations and search_disease_genes, using different verbs and inverted noun order.

Tool Count4/5

Eleven tools is a well-scoped size for a variant-interpretation server, and each genomics tool carries a distinct role in the resolve-profile-classify-literature workflow. The only questionable inclusion is support_helena, a campaign/manifest helper unrelated to the clinical domain, which slightly dilutes the set.

Completeness4/5

The core lifecycle is well covered: identifier resolution, gene profile with paginated sections, gene-disease validity in both directions, ACMG classification, and literature retrieval across gene, variant, corpus and individual PMID. Gaps remain around batch/VCF classification, structural or somatic variant handling (explicitly limited to <50bp germline SNVs/indels), and any explicit coordinate liftover or normalization tool, though agents can work around these via the flexible input formats of classify_germline_variant.

Available Tools

11 tools
classify_germline_variantClassify or interpret a germline variant under ACMG/AMPA
Read-onlyIdempotent
Inspect

Classify one GRCh38 germline nuclear SNV or simple indel smaller than 50 bp under ACMG/AMP. Accepts genomic, coding or protein HGVS, coordinates, SPDI, rsID or a returned canonical key. Returns normalized identity, automated classification, applied criteria, ClinVar assertions, population frequencies, annotations and source provenance when available. Ambiguous input returns candidates for selection.

NameRequiredDescriptionDefault
queryYesOne germline nuclear SNV or simple indel to resolve and interpret; accepted forms include coordinates, genomic/coding/protein HGVS, SPDI, rsID, or a returned Folklore canonical_key in GRCh38:chrN:position:REF:ALT form.
assemblyNoReference genome assembly. Folklore currently accepts GRCh38 only.GRCh38

Output Schema

NameRequiredDescription
resultYes
record_urlYes
adapter_errorYes
contract_versionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is carried. The description adds genuinely useful behavior beyond that: it enumerates the returned payload (normalized identity, classification, applied criteria, ClinVar assertions, frequencies, provenance) and discloses the ambiguity fallback that returns candidate list rather than a result.

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 sentences, each carrying distinct information: accepted scope, accepted input forms, and returned content plus ambiguity handling. The size limit and assembly constraint are front-loaded where an agent will read them first.

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?

For a single-query tool with a 100%-documented two-parameter schema, an output schema and full safety annotations, the description covers the remaining gaps an agent needs — variant scope limits and what happens on ambiguous input. Only minor omissions (e.g. what happens for out-of-scope variants) keep it from perfect.

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

Parameters3/5

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

Schema description coverage is 100% and the query parameter already lists coordinates, HGVS, SPDI, rsID and the canonical key form, so the description largely restates the schema. It adds only the canonical key shape hint and the 'one variant' constraint, so baseline 3 applies.

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

Purpose5/5

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

A precise verb (classify/interpret) plus a tightly bounded resource: one GRCh38 germline nuclear SNV or simple indel under 50 bp, under ACMG/AMP. The sibling tools are all gene- or literature-oriented, so this is trivially distinguishable as the variant-interpretation entry point.

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 establishes clear scope conditions — single variant, nuclear, GRCh38, under 50 bp — which implicitly exclude CNVs, structural variants and batch input, and it explains that ambiguous input yields candidates for selection. It stops short of naming alternatives or stating prerequisites, but for this tool family there is no real competing sibling.

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

get_gene_disease_associationsFind diseases associated with a geneA
Read-onlyIdempotent
Inspect

Find diseases associated with an exact gene symbol or HGNC identifier. Returns ClinGen gene-disease validity assertions, relation-specific inheritance, source reports and snapshot provenance, including conflicting and limited assertions.

NameRequiredDescriptionDefault
geneYesOne public human gene symbol or HGNC identifier, for example BRCA1 or HGNC:1100.
limitNoMaximum number of source assertions per page, from 1 to 50.
offsetNoZero-based assertion offset; use the returned nextOffset when present.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered. The description adds real context beyond that: what the payload contains (ClinGen gene-disease validity assertions, relation-specific inheritance, source reports, snapshot provenance) and that conflicting and limited assertions are included, which tells the agent to expect low-confidence results rather than treat them as errors.

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?

Two tight sentences: the first front-loads the action and accepted inputs, the second enumerates the returned content. No filler, no restatement of the title or annotations.

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 and full parameter descriptions, the description need only frame the tool's role, which it does. The main remaining gap is the lack of explicit routing guidance to resolve_gene or to the gene-profile siblings for agents holding an ambiguous gene name.

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%, so gene, limit, and offset are already fully documented with examples and bounds. The description reinforces the exact-match requirement on the gene argument but adds no meaning for the pagination parameters, so the 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 ('Find diseases associated with a gene') plus the accepted identifier forms, so the agent knows exactly what is being looked up. It does not distinguish itself from nearby siblings such as get_gene_profile, get_gene_section, or search_disease_genes, so it stops just short of a 5.

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?

Usage is implied by the 'exact gene symbol or HGNC identifier' phrasing, which hints that an unresolved name must be normalized first, but no alternative tool (e.g., resolve_gene) is named and there are no explicit when-not conditions. Adequate but leaves routing to inference.

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

get_gene_profileRead the complete gene profileA
Read-onlyIdempotent
Inspect

Read the selected gene_id and immutable snapshot_id from resolve_gene. Returns overview, disease validity, dosage, mechanisms, transcripts, native assemblies, constraint, ClinVar summaries and consequences, expression, GWAS, phenotypes and protein/pathways with source assertions, coverage, count units and null values. get_gene_section supplies further pages. Live search_gene_literature is separate from the snapshot literature section.

NameRequiredDescriptionDefault
gene_idYesCanonical HGNC gene_id returned by resolve_gene. Select an explicit candidate when resolution is ambiguous.
snapshot_idYesidentity_snapshot_id returned by resolve_gene, or snapshot_id from the current gene profile. Restart resolution after snapshot_unavailable.

Output Schema

NameRequiredDescription
resultYes
record_urlYes
adapter_errorYes
contract_versionYes

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already establish read-only, idempotent, closed-world behavior with no destruction. The description adds useful behavioral context by calling the snapshot immutable, summarizing the returned domains, and noting source assertions, coverage, count units, and null values; error/retry guidance is left mainly to the schema.

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?

The description is front-loaded and compact: the first sentence states the core operation and source, the second summarizes the returned profile, and the third routes to alternatives. Every sentence is functional.

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 the description need not fully enumerate return fields; it appropriately summarizes the rich profile content. Combined with annotations and 100% parameter coverage, it provides enough context for selecting and invoking the tool correctly.

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 both arguments are already well documented with patterns and provenance. The description reinforces that gene_id is the selected gene and snapshot_id is immutable, but it does not add syntax or format details beyond 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?

The description gives a specific verb and resource: read the selected gene profile using gene_id and snapshot_id from resolve_gene. It also distinguishes sibling behavior by naming get_gene_section for further pages and separating live search_gene_literature from the snapshot literature section.

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 clearly situates the tool after resolve_gene and names get_gene_section as the way to obtain further pages, while noting that live literature search is separate. It stops short of an explicit when-not rule, but the alternatives and context are clear enough for correct selection.

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

get_gene_sectionRead a page of gene recordsA
Read-onlyIdempotent
Inspect

Read a gene-profile section using gene_id, snapshot_id and its returned opaque cursor. Returns source records, assembly/release, coverage, totals, count units and provenance. snapshot_unavailable requires a fresh resolution/profile request.

NameRequiredDescriptionDefault
limitNoMaximum source records per page, from 1 to 50. Counts retain their original source unit.
cursorNoOpaque next_cursor returned for this same gene, snapshot and section. Omit for its first page.
gene_idYesCanonical HGNC gene_id returned by resolve_gene. Select an explicit candidate when resolution is ambiguous.
sectionYesSource-qualified section from the current profile. Literature is a separate live capture; use search_gene_literature for it.
snapshot_idYesidentity_snapshot_id returned by resolve_gene, or snapshot_id from the current gene profile. Restart resolution after snapshot_unavailable.

Output Schema

NameRequiredDescription
resultYes
record_urlYes
adapter_errorYes
contract_versionYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value beyond that: it names the pagination contract (opaque cursor), summarizes what a page yields (source records, assembly/release, coverage, totals, count units, provenance) and discloses a failure mode (snapshot_unavailable) with the remedy.

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?

Two tight sentences with the access keys front-loaded before the return payload and the error case. The return-value enumeration is slightly redundant given that an output schema exists, which keeps it just short of a 5.

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 annotations carrying the safety profile, a full output schema, and 100% parameter documentation, the description's remaining job is to explain the paging model and the snapshot_unavailable recovery, both of which it does. Nothing an agent needs in order to invoke it correctly 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 description coverage is 100%, so all five parameters, including the enum values and the cursor's same-gene/snapshot/section constraint, are already documented. The description only restates that the cursor is 'returned' and opaque, adding no new syntax or format detail, so the baseline of 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?

The definition names a specific verb and resource ('Read a gene-profile section') and enumerates the addressing keys (gene_id, snapshot_id, cursor), so its paginated-section-read purpose is unmistakable. It does not explicitly contrast itself with the sibling get_gene_profile, leaving the agent to infer that one is the full profile and this is a paged slice.

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?

Usage is only implied: 'its returned opaque cursor' signals that follow-up pages go through this same tool, and 'snapshot_unavailable requires a fresh resolution/profile request' gives an error-recovery path. There is no explicit statement of when to choose this over get_gene_profile or which sibling to call first.

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

get_publication_detailsGet details for a PubMed publicationB
Read-onlyIdempotent
Inspect

Retrieve one PMID from the PubMed-derived genetics corpus, including title, abstract, authors, journal, publication types, MeSH terms, gene and variant mentions, retraction status and PubMed/PMC links.

NameRequiredDescriptionDefault
pmidYesOne PubMed identifier to look up in Folklore's current corpus, as 1 to 12 digits without a PMID prefix.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, closed-world behavior, so safety is covered. The description adds that data comes from a specific derived corpus and that retraction status is surfaced, but says nothing about what happens when a PMID is absent from the corpus or how stale the data may be.

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?

A single front-loaded sentence with the action and scope stated first, followed by the field inventory. The field list is long but each item is informative rather than filler.

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

Completeness3/5

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

An output schema exists, so the enumerated return fields are partly redundant. What is missing for a lookup tool is the not-found/miss behavior and any note on corpus coverage boundaries, which an agent would need to interpret an empty or error result.

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%, including the digit-only format and the 'no PMID prefix' constraint, so the schema does the heavy lifting. The description only restates 'one PMID' and adds no format or validation detail beyond it.

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: 'Retrieve one PMID from the PubMed-derived genetics corpus', and enumerates the returned content. It is clear what the tool does, but it never differentiates itself from sibling search tools like search_literature_corpus or search_gene_literature.

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?

Usage is only implied by 'one PMID' — i.e. this is the fetch-by-identifier tool, used after a search returns a PMID. No explicit when-to-use, when-not-to-use, or named alternative is given.

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

resolve_geneResolve a gene symbol, alias or stable identifierA
Read-onlyIdempotent
Inspect

Resolve a human gene symbol, previous symbol, alias, HGNC, Ensembl or NCBI Gene identifier. Returns exact, alias, ambiguous, not_found or withdrawn status with candidates and identity_snapshot_id. Use a selected HGNC gene_id and snapshot_id with get_gene_profile. Gene-plus-HGVS and variant expressions use classify_germline_variant.

NameRequiredDescriptionDefault
queryYesOne public gene symbol, previous symbol, alias, HGNC ID, Ensembl gene ID or NCBI Gene ID.

Output Schema

NameRequiredDescription
resultYes
record_urlYes
adapter_errorYes
contract_versionYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the description's job is lighter. It adds real behavioral value by naming the five possible outcome statuses (exact, alias, ambiguous, not_found, withdrawn) and the returned candidates and identity_snapshot_id, telling the agent to expect non-exact resolutions rather than a boolean hit.

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 tight sentences: what it resolves, what it returns, where to go next. The disambiguation to classify_germline_variant is front-loaded at the end where it prevents the most likely misfire.

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 one-parameter resolution tool with full annotations and an output schema, nothing essential is missing: input space, outcome statuses, and the downstream handoff are all covered, and return-value structure is delegated to the output schema.

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?

With a single parameter at 100% schema coverage, the schema already documents the accepted identifier forms and length bounds. The description restates the identifier types but adds no format or syntax detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (resolve) and enumerates the exact input space: symbol, previous symbol, alias, HGNC, Ensembl or NCBI Gene ID, restricted to human genes. This is clearly distinguishable from siblings like get_gene_profile or classify_germline_variant at a glance.

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?

Explicitly routes the agent forward ('Use a selected HGNC gene_id and snapshot_id with get_gene_profile') and carves out an exclusion ('Gene-plus-HGVS and variant expressions use classify_germline_variant'). Both the when-to-use-next and the when-not-to-use-this cases are named.

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

search_disease_genesFind genes associated with a diseaseA
Read-onlyIdempotent
Inspect

Find genes associated with an exact MONDO identifier or disease-name search. Returns ClinGen validity assertions with inheritance, source reports and snapshot provenance. Name searches can return multiple disease identities.

NameRequiredDescriptionDefault
limitNoMaximum number of source assertions per page, from 1 to 50.
offsetNoZero-based assertion offset; use the returned nextOffset when present.
diseaseYesOne public disease name or exact MONDO identifier (MONDO: followed by seven digits). A name search may match multiple distinct diseases.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: it reveals the payload is ClinGen validity assertions with inheritance and source reports, includes snapshot provenance, and that name searches may resolve to multiple disease identities — all things an agent could not infer from annotations.

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 short sentences, front-loaded with the core action and return content, then the name-search caveat. No filler; each sentence carries information, though the caveat partially duplicates the schema.

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?

An output schema exists, so return-value detail isn't required, and the description still characterizes the result payload. Combined with full schema coverage and safety annotations, an agent has enough to call this correctly; only the missing sibling comparison keeps it from 5.

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 all three parameters are documented in the schema, establishing the baseline of 3. The description adds only the pairing of 'disease' with exact MONDO identifiers or names and the multi-match caveat, both of which are essentially restated in the schema's parameter descriptions.

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?

The description gives a specific verb+resource ('Find genes associated with a disease') and states what is returned (ClinGen validity assertions with inheritance, source reports, snapshot provenance). It does not explicitly differentiate itself from the sibling get_gene_disease_associations, which is the closest alternative, so it falls short of a 5.

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 lookup mode ('exact MONDO identifier or disease-name search') and warns that name searches can return multiple disease identities, which is a useful usage cue. However, it never says when to prefer this over get_gene_disease_associations or resolve_gene, and no exclusion conditions are stated.

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

search_gene_literatureFind live literature for a resolved public geneA
Read-onlyIdempotent
Inspect

Retrieve a live publication capture for a resolved gene_id and snapshot_id. Returns source links, match labels, capture time/hash, degradation and gene/snapshot/sort-bound cursors. This capture is separate from the immutable reference snapshot and contains no abstracts.

NameRequiredDescriptionDefault
sortNoDiscovery ordering. Keep the same sort for continuation pages.relevance
limitNoMaximum publication records in one live discovery page, from 1 to 25.
cursorNoOpaque next_cursor returned for this same gene, snapshot and sort. Omit for the first page.
gene_idYesCanonical HGNC gene_id returned by resolve_gene. Select an explicit candidate when resolution is ambiguous.
snapshot_idYesidentity_snapshot_id returned by resolve_gene, or snapshot_id from the current gene profile. Restart resolution after snapshot_unavailable.

Output Schema

NameRequiredDescription
resultYes
record_urlYes
adapter_errorYes
contract_versionYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral context on top: the result is a live capture that may be degraded, it carries capture time/hash and match labels, cursors are bound to gene/snapshot/sort, and abstracts are absent. 'Contains no abstracts' is a return-value detail that partially duplicates the output schema, keeping it from a 5.

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 tight sentences, front-loaded with the operation and inputs before the payoff and the snapshot caveat. Dense but nothing is wasted; the only redundancy is restating return fields that the output schema already covers.

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 need not enumerate return values, and it still adds the key caveat that this is a live, possibly degraded capture distinct from the immutable snapshot. Parameter coverage is complete, so an agent has everything needed to invoke it correctly; only explicit sibling routing 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 description coverage is 100%, so every parameter is already documented, establishing a baseline of 3. The description reinforces the cursor contract ('gene/snapshot/sort-bound cursors') but adds no syntax, defaults, or limits beyond what the schema already states for sort, limit, and cursor.

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?

The description uses a specific verb and resource — 'Retrieve a live publication capture for a resolved gene_id and snapshot_id' — so an agent knows exactly what is being fetched and what the two key inputs are. It also draws a line between the live capture and the immutable reference snapshot, which hints at the sibling corpus tools, though it never names them outright.

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?

Usage is implied rather than stated: the tool is only callable with a resolved gene_id and snapshot_id from resolve_gene, which the schema reinforces, so the prerequisite chain is discoverable. However, the description never explicitly says when to prefer this over search_literature_corpus, search_variant_literature, or get_publication_details, leaving the agent to infer routing from the 'live capture vs immutable snapshot' remark.

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

search_literature_corpusSearch the Folklore Literature CorpusA
Read-onlyIdempotent
Inspect

Search the genetics Literature Corpus by question, PMID, DOI, PMCID, gene, variant, phenotype, HPO or OMIM concept. Known publication identifiers provide exact anchors. Returns ranked publications, match types, scores and source links.

NameRequiredDescriptionDefault
sortNoResult ordering: relevance-ranked, newest publication first, or oldest publication first.relevance
limitNoMaximum number of publications to return, from 1 to 25.
queryYesNatural-language literature question or exact PMID, DOI, PMCID, gene, variant, phenotype, HPO, or OMIM query. Include every known publication identifier when comparing or finding related papers.
cursorNoOpaque continuation cursor from the preceding response for the same query and sort order; omit for the first page.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the safe read-only, idempotent, closed-world profile, so the description's burden is lighter; it adds the return shape (ranked publications, match types, scores, source links). It does not mention pagination limits or the 25-result cap, but those are covered by schema and output 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?

Two compact sentences with the resource and accepted query types front-loaded and no filler. The return-shape sentence earns its place, though it slightly overlaps the separate output schema.

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?

Given rich annotations, a fully documented 4-parameter schema, and an output schema, the description supplies enough for correct invocation. The only real gap is routing relative to the specialized gene/variant 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?

With 100% schema description coverage, the baseline is 3. The description reinforces that identifiers act as exact-match anchors and that all known identifiers should be included, which adds a little meaning, but it does not elaborate sort, limit, or cursor semantics beyond the schema.

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 (search) and resource (genetics Literature Corpus) and enumerates the query dimensions accepted (PMID, DOI, gene, variant, phenotype, HPO, OMIM), distinguishing it as the broad corpus search. It does not, however, contrast itself with the closely related siblings search_gene_literature or search_variant_literature, leaving an agent to infer the boundary.

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?

"Known publication identifiers provide exact anchors" is a useful usage hint about identifier-based lookups, but the description gives no explicit when-to-use/when-not guidance and never names an alternative tool. For a corpus with several sibling search tools, that omission forces the agent to infer routing.

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

search_variant_literatureFind literature for a germline variantA
Read-onlyIdempotent
Inspect

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.

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

NameRequiredDescription

No output parameters

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.

support_helenaSupport Helena's free scientific infrastructureB
Read-onlyIdempotent
Inspect

Retrieve Helena Good campaign, rules, manifest and MCP connection URLs.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only the inventory of returned resources (campaign, rules, manifest, connection URLs), with no mention of auth prerequisites, freshness, or whether the URLs expire. Modest added value beyond annotations.

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?

A single compact sentence with no filler, and the verb comes first. It could be tightened only by making the domain clear rather than by removing words.

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

Completeness3/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-value explanation is unnecessary, and there are no parameters to document. The remaining gap is motivational: for a marketing/funding-flavored tool sitting among gene and variant tools, the description never says why or when an agent would invoke it, which is the main thing left unexplained.

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?

The tool takes zero parameters and the schema is fully described, so there is nothing for the description to disambiguate. Baseline 4 applies.

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

Purpose3/5

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

The description gives a verb ('Retrieve') and enumerates resources (campaign, rules, manifest, MCP connection URLs), so it is more than a restatement of the name. However, terms like 'Helena Good campaign' and 'manifest' are opaque in a dataset of genomics tools, and the title's framing ('Support Helena's free scientific infrastructure') only hints at the actual purpose. An agent can tell it apart from siblings but cannot easily form a mental model of what the returned object represents.

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

Usage Guidelines2/5

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

There is no indication of when an agent should call this tool, whether it is required for setup/connection, or what alternatives exist. It is not misleading, but usage is left entirely to inference from the title.

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. 11 tool updates
    • Addedclassify_germline_variant
    • Changedget_gene_disease_associations7 fields changed
      • changedInput schema / properties / gene / description
        Previous value: -"One public human gene symbol or HGNC identifier, for example BRCA1 or HGNC:1100. No patient data."New value: +"One public human gene symbol or HGNC identifier, for example BRCA1 or HGNC:1100."
      • removedOutput schema / $defs / UsageBoundary
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "intended_use": {
        -      "const": "professional_gene_disease_review",
        -      "title": "Intended Use",
        -      "type": "string"
        -    },
        -    "not_for": {
        -      "items": {
        -        "enum": [
        -          "patient_diagnosis",
        -          "treatment_decision",
        -          "variant_pathogenicity_classification"
        -        ],
        -        "type": "string"
        -      },
        -      "title": "Not For",
        -      "type": "array"
        -    },
        -    "patient_context_evaluated": {
        -      "const": false,
        -      "title": "Patient Context Evaluated",
        -      "type": "boolean"
        -    },
        -    "review_required": {
        -      "const": true,
        -      "title": "Review Required",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "intended_use",
        -    "patient_context_evaluated",
        -    "review_required",
        -    "not_for"
        -  ],
        -  "title": "UsageBoundary",
        -  "type": "object"
        -}
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "associations": {
        +        "items": {
        +          "$ref": "#/$defs/Association"
        +        },
        +        "maxItems": 50,
        +        "title": "Associations",
        +        "type": "array"
        +      },
        +      "contractVersion": {
        +        "const": "2",
        +        "title": "Contractversion",
        +        "type": "string"
        +      },
        +      "pagination": {
        +        "$ref": "#/$defs/Pagination"
        +      },
        +      "query": {
        +        "$ref": "#/$defs/Query"
        +      },
        +      "source": {
        +        "$ref": "#/$defs/Source"
        +      },
        +      "status": {
        +        "enum": [
        +          "ok",
        +          "not_found"
        +        ],
        +        "title": "Status",
        +        "type": "string"
        +      },
        +      "warnings": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "title": "Warnings",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "contractVersion",
        +      "status",
        +      "query",
        +      "associations",
        +      "pagination",
        +      "source",
        +      "warnings"
        +    ],
        +    "title": "GeneDiseaseResponse",
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "adapter_error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "message": {
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      },
        +      "contractVersion": {
        +        "const": "2"
        +      }
        +    },
        +    "required": [
        +      "contractVersion",
        +      "adapter_error"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "associations": {
        -    "items": {
        -      "$ref": "#/$defs/Association"
        -    },
        -    "maxItems": 50,
        -    "title": "Associations",
        -    "type": "array"
        -  },
        -  "contractVersion": {
        -    "const": "1.0",
        -    "title": "Contractversion",
        -    "type": "string"
        -  },
        -  "pagination": {
        -    "$ref": "#/$defs/Pagination"
        -  },
        -  "query": {
        -    "$ref": "#/$defs/Query"
        -  },
        -  "source": {
        -    "$ref": "#/$defs/Source"
        -  },
        -  "status": {
        -    "enum": [
        -      "ok",
        -      "not_found"
        -    ],
        -    "title": "Status",
        -    "type": "string"
        -  },
        -  "usage_boundary": {
        -    "$ref": "#/$defs/UsageBoundary"
        -  },
        -  "warnings": {
        -    "items": {
        -      "type": "string"
        -    },
        -    "title": "Warnings",
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "contractVersion",
        -  "status",
        -  "query",
        -  "associations",
        -  "pagination",
        -  "source",
        -  "warnings",
        -  "usage_boundary"
        -]
      • removedOutput schema / title
        Removed value: -"GeneDiseaseResponse"
    • Changedget_gene_profile3 fields changed
      • changedOutput schema / properties / contract_version / const
        Previous value: -"1"New value: +"2"
      • removedOutput schema / properties / usage_boundary
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "changes_variant_classification": {
        -      "const": false
        -    },
        -    "intended_use": {
        -      "const": "professional_gene_reference_review"
        -    },
        -    "not_for": {
        -      "const": [
        -        "patient_diagnosis",
        -        "treatment_decision",
        -        "variant_pathogenicity_classification"
        -      ]
        -    },
        -    "patient_context_evaluated": {
        -      "const": false
        -    },
        -    "review_required": {
        -      "const": true
        -    }
        -  },
        -  "required": [
        -    "intended_use",
        -    "patient_context_evaluated",
        -    "review_required",
        -    "changes_variant_classification",
        -    "not_for"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "contract_version",
        -  "result",
        -  "record_url",
        -  "usage_boundary",
        -  "adapter_error"
        -]New value: +[
        +  "contract_version",
        +  "result",
        +  "record_url",
        +  "adapter_error"
        +]
    • Changedget_gene_section3 fields changed
      • changedOutput schema / properties / contract_version / const
        Previous value: -"1"New value: +"2"
      • removedOutput schema / properties / usage_boundary
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "changes_variant_classification": {
        -      "const": false
        -    },
        -    "intended_use": {
        -      "const": "professional_gene_reference_review"
        -    },
        -    "not_for": {
        -      "const": [
        -        "patient_diagnosis",
        -        "treatment_decision",
        -        "variant_pathogenicity_classification"
        -      ]
        -    },
        -    "patient_context_evaluated": {
        -      "const": false
        -    },
        -    "review_required": {
        -      "const": true
        -    }
        -  },
        -  "required": [
        -    "intended_use",
        -    "patient_context_evaluated",
        -    "review_required",
        -    "changes_variant_classification",
        -    "not_for"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "contract_version",
        -  "result",
        -  "record_url",
        -  "usage_boundary",
        -  "adapter_error"
        -]New value: +[
        +  "contract_version",
        +  "result",
        +  "record_url",
        +  "adapter_error"
        +]
    • Changedget_publication_details5 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "contract_version": {
        +        "const": "2",
        +        "title": "Contract Version",
        +        "type": "string"
        +      },
        +      "publication": {
        +        "$ref": "#/$defs/PublicPublicationDetails"
        +      }
        +    },
        +    "required": [
        +      "contract_version",
        +      "publication"
        +    ],
        +    "title": "PublicationDetailsResponse",
        +    "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",
        -    "title": "Contract Version",
        -    "type": "string"
        -  },
        -  "publication": {
        -    "$ref": "#/$defs/PublicPublicationDetails"
        -  },
        -  "usage_boundary": {
        -    "additionalProperties": true,
        -    "title": "Usage Boundary",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "contract_version",
        -  "publication",
        -  "usage_boundary"
        -]
      • removedOutput schema / title
        Removed value: -"PublicationDetailsResponse"
    • Changedresolve_gene4 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"One public gene symbol, previous symbol, alias, HGNC ID, Ensembl gene ID or NCBI Gene ID. No patient or case narrative."New value: +"One public gene symbol, previous symbol, alias, HGNC ID, Ensembl gene ID or NCBI Gene ID."
      • changedOutput schema / properties / contract_version / const
        Previous value: -"1"New value: +"2"
      • removedOutput schema / properties / usage_boundary
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "changes_variant_classification": {
        -      "const": false
        -    },
        -    "intended_use": {
        -      "const": "professional_gene_reference_review"
        -    },
        -    "not_for": {
        -      "const": [
        -        "patient_diagnosis",
        -        "treatment_decision",
        -        "variant_pathogenicity_classification"
        -      ]
        -    },
        -    "patient_context_evaluated": {
        -      "const": false
        -    },
        -    "review_required": {
        -      "const": true
        -    }
        -  },
        -  "required": [
        -    "intended_use",
        -    "patient_context_evaluated",
        -    "review_required",
        -    "changes_variant_classification",
        -    "not_for"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "contract_version",
        -  "result",
        -  "record_url",
        -  "usage_boundary",
        -  "adapter_error"
        -]New value: +[
        +  "contract_version",
        +  "result",
        +  "record_url",
        +  "adapter_error"
        +]
    • Changedsearch_disease_genes7 fields changed
      • changedInput schema / properties / disease / description
        Previous value: -"One public disease name or exact MONDO identifier (MONDO: followed by seven digits). A name search may match multiple distinct diseases. No symptoms or patient narrative."New value: +"One public disease name or exact MONDO identifier (MONDO: followed by seven digits). A name search may match multiple distinct diseases."
      • removedOutput schema / $defs / UsageBoundary
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "intended_use": {
        -      "const": "professional_gene_disease_review",
        -      "title": "Intended Use",
        -      "type": "string"
        -    },
        -    "not_for": {
        -      "items": {
        -        "enum": [
        -          "patient_diagnosis",
        -          "treatment_decision",
        -          "variant_pathogenicity_classification"
        -        ],
        -        "type": "string"
        -      },
        -      "title": "Not For",
        -      "type": "array"
        -    },
        -    "patient_context_evaluated": {
        -      "const": false,
        -      "title": "Patient Context Evaluated",
        -      "type": "boolean"
        -    },
        -    "review_required": {
        -      "const": true,
        -      "title": "Review Required",
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "intended_use",
        -    "patient_context_evaluated",
        -    "review_required",
        -    "not_for"
        -  ],
        -  "title": "UsageBoundary",
        -  "type": "object"
        -}
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "associations": {
        +        "items": {
        +          "$ref": "#/$defs/Association"
        +        },
        +        "maxItems": 50,
        +        "title": "Associations",
        +        "type": "array"
        +      },
        +      "contractVersion": {
        +        "const": "2",
        +        "title": "Contractversion",
        +        "type": "string"
        +      },
        +      "pagination": {
        +        "$ref": "#/$defs/Pagination"
        +      },
        +      "query": {
        +        "$ref": "#/$defs/Query"
        +      },
        +      "source": {
        +        "$ref": "#/$defs/Source"
        +      },
        +      "status": {
        +        "enum": [
        +          "ok",
        +          "not_found"
        +        ],
        +        "title": "Status",
        +        "type": "string"
        +      },
        +      "warnings": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "title": "Warnings",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "contractVersion",
        +      "status",
        +      "query",
        +      "associations",
        +      "pagination",
        +      "source",
        +      "warnings"
        +    ],
        +    "title": "GeneDiseaseResponse",
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "adapter_error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "message": {
        +            "type": "string"
        +          },
        +          "retryable": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message",
        +          "retryable"
        +        ],
        +        "type": "object"
        +      },
        +      "contractVersion": {
        +        "const": "2"
        +      }
        +    },
        +    "required": [
        +      "contractVersion",
        +      "adapter_error"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "associations": {
        -    "items": {
        -      "$ref": "#/$defs/Association"
        -    },
        -    "maxItems": 50,
        -    "title": "Associations",
        -    "type": "array"
        -  },
        -  "contractVersion": {
        -    "const": "1.0",
        -    "title": "Contractversion",
        -    "type": "string"
        -  },
        -  "pagination": {
        -    "$ref": "#/$defs/Pagination"
        -  },
        -  "query": {
        -    "$ref": "#/$defs/Query"
        -  },
        -  "source": {
        -    "$ref": "#/$defs/Source"
        -  },
        -  "status": {
        -    "enum": [
        -      "ok",
        -      "not_found"
        -    ],
        -    "title": "Status",
        -    "type": "string"
        -  },
        -  "usage_boundary": {
        -    "$ref": "#/$defs/UsageBoundary"
        -  },
        -  "warnings": {
        -    "items": {
        -      "type": "string"
        -    },
        -    "title": "Warnings",
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "contractVersion",
        -  "status",
        -  "query",
        -  "associations",
        -  "pagination",
        -  "source",
        -  "warnings",
        -  "usage_boundary"
        -]
      • removedOutput schema / title
        Removed value: -"GeneDiseaseResponse"
    • Changedsearch_gene_literature3 fields changed
      • changedOutput schema / properties / contract_version / const
        Previous value: -"1"New value: +"2"
      • removedOutput schema / properties / usage_boundary
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "changes_variant_classification": {
        -      "const": false
        -    },
        -    "intended_use": {
        -      "const": "professional_gene_reference_review"
        -    },
        -    "not_for": {
        -      "const": [
        -        "patient_diagnosis",
        -        "treatment_decision",
        -        "variant_pathogenicity_classification"
        -      ]
        -    },
        -    "patient_context_evaluated": {
        -      "const": false
        -    },
        -    "review_required": {
        -      "const": true
        -    }
        -  },
        -  "required": [
        -    "intended_use",
        -    "patient_context_evaluated",
        -    "review_required",
        -    "changes_variant_classification",
        -    "not_for"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "contract_version",
        -  "result",
        -  "record_url",
        -  "usage_boundary",
        -  "adapter_error"
        -]New value: +[
        +  "contract_version",
        +  "result",
        +  "record_url",
        +  "adapter_error"
        +]
    • Changedsearch_literature_corpus5 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "contract_version": {
        +        "const": "2",
        +        "title": "Contract Version",
        +        "type": "string"
        +      },
        +      "graph_degraded_reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Graph Degraded Reason"
        +      },
        +      "graph_used": {
        +        "default": false,
        +        "title": "Graph Used",
        +        "type": "boolean"
        +      },
        +      "graph_version": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Graph Version"
        +      },
        +      "has_more": {
        +        "default": false,
        +        "title": "Has More",
        +        "type": "boolean"
        +      },
        +      "next_cursor": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Next Cursor"
        +      },
        +      "query": {
        +        "title": "Query",
        +        "type": "string"
        +      },
        +      "results": {
        +        "items": {
        +          "$ref": "#/$defs/PublicCorpusSearchResult"
        +        },
        +        "title": "Results",
        +        "type": "array"
        +      },
        +      "returned_count": {
        +        "title": "Returned Count",
        +        "type": "integer"
        +      },
        +      "searchable_fields": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "title": "Searchable Fields",
        +        "type": "array"
        +      },
        +      "semantic_degraded_reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Semantic Degraded Reason"
        +      },
        +      "semantic_index_used": {
        +        "default": false,
        +        "title": "Semantic Index Used",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "contract_version",
        +      "query",
        +      "returned_count",
        +      "results",
        +      "searchable_fields"
        +    ],
        +    "title": "PublicCorpusSearchResponse",
        +    "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",
        -    "title": "Contract Version",
        -    "type": "string"
        -  },
        -  "graph_degraded_reason": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "default": null,
        -    "title": "Graph Degraded Reason"
        -  },
        -  "graph_used": {
        -    "default": false,
        -    "title": "Graph Used",
        -    "type": "boolean"
        -  },
        -  "graph_version": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "default": null,
        -    "title": "Graph Version"
        -  },
        -  "has_more": {
        -    "default": false,
        -    "title": "Has More",
        -    "type": "boolean"
        -  },
        -  "next_cursor": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "default": null,
        -    "title": "Next Cursor"
        -  },
        -  "query": {
        -    "title": "Query",
        -    "type": "string"
        -  },
        -  "results": {
        -    "items": {
        -      "$ref": "#/$defs/PublicCorpusSearchResult"
        -    },
        -    "title": "Results",
        -    "type": "array"
        -  },
        -  "returned_count": {
        -    "title": "Returned Count",
        -    "type": "integer"
        -  },
        -  "searchable_fields": {
        -    "items": {
        -      "type": "string"
        -    },
        -    "title": "Searchable Fields",
        -    "type": "array"
        -  },
        -  "semantic_degraded_reason": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "default": null,
        -    "title": "Semantic Degraded Reason"
        -  },
        -  "semantic_index_used": {
        -    "default": false,
        -    "title": "Semantic Index Used",
        -    "type": "boolean"
        -  },
        -  "usage_boundary": {
        -    "additionalProperties": true,
        -    "title": "Usage Boundary",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "contract_version",
        -  "query",
        -  "returned_count",
        -  "results",
        -  "searchable_fields",
        -  "usage_boundary"
        -]
      • removedOutput schema / title
        Removed value: -"PublicCorpusSearchResponse"
    • Removedsearch_variant_evidence
    • Changedsearch_variant_literature5 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. 4 tool updates
    • Addedget_gene_profile
    • Addedget_gene_section
    • Addedresolve_gene
    • Addedsearch_gene_literature
  3. 2 tool updates
    • Addedget_gene_disease_associations
    • Addedsearch_disease_genes
  4. 1 tool update
    • Changedget_publication_details2 fields changed
      • addedOutput schema / $defs / PublicAbstractReuse
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "allowed": {
        +      "default": false,
        +      "title": "Allowed",
        +      "type": "boolean"
        +    },
        +    "evidence_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Evidence Url"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "License"
        +    },
        +    "source": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Source"
        +    }
        +  },
        +  "title": "PublicAbstractReuse",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / PublicPublicationDetails / properties / abstract_reuse
        Added value: +{
        +  "$ref": "#/$defs/PublicAbstractReuse"
        +}
  5. 1 tool update
    • Changedsearch_literature_corpus6 fields changed
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / graph_anchor_pmid
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Graph Anchor Pmid"
        +}
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / graph_score
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Graph Score"
        +}
      • changedOutput schema / $defs / PublicCorpusSearchResult / properties / match_types / items / enum
        Previous value: -[
        -  "pmid",
        -  "doi",
        -  "pmcid",
        -  "title",
        -  "abstract",
        -  "gene",
        -  "variant",
        -  "phenotype",
        -  "hpo",
        -  "omim",
        -  "semantic"
        -]New value: +[
        +  "pmid",
        +  "doi",
        +  "pmcid",
        +  "title",
        +  "abstract",
        +  "gene",
        +  "variant",
        +  "phenotype",
        +  "hpo",
        +  "omim",
        +  "semantic",
        +  "graph"
        +]
      • addedOutput schema / properties / graph_degraded_reason
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Graph Degraded Reason"
        +}
      • addedOutput schema / properties / graph_used
        Added value: +{
        +  "default": false,
        +  "title": "Graph Used",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / graph_version
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Graph Version"
        +}
  6. 1 tool update
    • Changedsearch_literature_corpus1 field changed
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / authors
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "title": "Authors",
        +  "type": "array"
        +}
  7. 1 tool update
    • Addedsupport_helena
  8. 4 tool updates
    • Changedget_publication_details1 field changed
      • addedInput schema / properties / pmid / description
        Added value: +"One PubMed identifier to look up in Folklore's current corpus, as 1 to 12 digits without a PMID prefix."
    • Changedsearch_literature_corpus4 fields changed
      • addedInput schema / properties / cursor / description
        Added value: +"Opaque continuation cursor from the preceding response for the same query and sort order; omit for the first page."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of publications to return, from 1 to 25."
      • addedInput schema / properties / query / description
        Added value: +"Natural-language literature question or exact PMID, DOI, PMCID, gene, variant, phenotype, HPO, or OMIM query. Include every known publication identifier when comparing or finding related papers."
      • addedInput schema / properties / sort / description
        Added value: +"Result ordering: relevance-ranked, newest publication first, or oldest publication first."
    • Changedsearch_variant_evidence2 fields changed
      • addedInput schema / properties / assembly / description
        Added value: +"Reference genome assembly. Folklore currently accepts GRCh38 only."
      • addedInput schema / properties / query / description
        Added value: +"One germline nuclear SNV or simple indel to resolve and interpret; accepted forms include coordinates, genomic/coding/protein HGVS, SPDI, rsID, or a returned Folklore canonical_key in GRCh38:chrN:position:REF:ALT form."
    • Changedsearch_variant_literature4 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."
  9. 1 tool update
    • Changedsearch_literature_corpus2 fields changed
      • addedOutput schema / $defs / PublicCorpusArticleEntity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "entity_type": {
        +      "enum": [
        +        "gene",
        +        "variant",
        +        "phenotype",
        +        "pmid",
        +        "doi",
        +        "pmcid",
        +        "omim"
        +      ],
        +      "title": "Entity Type",
        +      "type": "string"
        +    },
        +    "identifier": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Identifier"
        +    },
        +    "label": {
        +      "title": "Label",
        +      "type": "string"
        +    },
        +    "normalization_state": {
        +      "enum": [
        +        "normalized",
        +        "source_indexed"
        +      ],
        +      "title": "Normalization State",
        +      "type": "string"
        +    },
        +    "source_field": {
        +      "enum": [
        +        "work_identifiers.normalized_value",
        +        "gene_mentions.gene_symbol",
        +        "variant_mentions.normalized_variant",
        +        "phenotype_mentions.hpo_id",
        +        "phenotype_mentions.omim_id",
        +        "phenotype_mentions.mesh_term",
        +        "phenotype_mentions.phenotype_name"
        +      ],
        +      "title": "Source Field",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "entity_type",
        +    "identifier",
        +    "label",
        +    "source_field",
        +    "normalization_state"
        +  ],
        +  "title": "PublicCorpusArticleEntity",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / article_entities
        Added value: +{
        +  "items": {
        +    "$ref": "#/$defs/PublicCorpusArticleEntity"
        +  },
        +  "title": "Article Entities",
        +  "type": "array"
        +}
  10. 1 tool update
    • Changedsearch_literature_corpus3 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 8,
        +      "pattern": "^[A-Za-z0-9_-]+$",
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Cursor"
        +}
      • addedOutput schema / properties / has_more
        Added value: +{
        +  "default": false,
        +  "title": "Has More",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Next Cursor"
        +}
  11. 2 tool updates
    • Changedsearch_literature_corpus8 fields changed
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / pmid / anyOf
        Added value: +[
        +  {
        +    "pattern": "^[0-9]{1,12}$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / $defs / PublicCorpusSearchResult / properties / pmid / pattern
        Removed value: -"^[0-9]{1,12}$"
      • removedOutput schema / $defs / PublicCorpusSearchResult / properties / pmid / type
        Removed value: -"string"
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / pubmed_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / $defs / PublicCorpusSearchResult / properties / pubmed_url / type
        Removed value: -"string"
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / source_url
        Added value: +{
        +  "title": "Source Url",
        +  "type": "string"
        +}
      • addedOutput schema / $defs / PublicCorpusSearchResult / properties / work_id
        Added value: +{
        +  "title": "Work Id",
        +  "type": "string"
        +}
      • changedOutput schema / $defs / PublicCorpusSearchResult / required
        Previous value: -[
        -  "pmid",
        -  "title",
        -  "abstract_excerpt",
        -  "journal",
        -  "publication_date",
        -  "doi",
        -  "pmc_id",
        -  "pubmed_url",
        -  "match_types",
        -  "structured_score"
        -]New value: +[
        +  "work_id",
        +  "pmid",
        +  "title",
        +  "abstract_excerpt",
        +  "journal",
        +  "publication_date",
        +  "doi",
        +  "pmc_id",
        +  "source_url",
        +  "pubmed_url",
        +  "match_types",
        +  "structured_score"
        +]
    • Changedsearch_variant_literature1 field changed
      • changedOutput schema / $defs / CorpusProvenance / properties / source / const
        Previous value: -"PubMed-derived Helena genetics corpus"New value: +"Helena Literature Corpus canonical works"
  12. 1 tool update
    • Addedsearch_literature_corpus
  13. 2 tool updates
    • Addedget_publication_details
    • Addedsearch_variant_literature

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables real-time pharmacogenomics analysis, including variant clinical significance, drug-gene interactions, and dosing guidelines, by connecting to ClinVar, PharmGKB, gnomAD, and other databases.
    1
    MIT
  • 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
    Not graded
    quality
    A
    maintenance
    Enables querying ClinGen curated evidence for gene-disease validity, dosage, actionability, and variant pathogenicity via MCP tools.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.