Skip to main content
Glama

verify_text

Read-onlyIdempotent

Scan HLA typing report text, or model output about HLA, for allele-shaped tokens and classify each one: valid / legacy spelling such as A0201 or Cw0702 (valid, with modern form and flag deprecated_name) / G-P group / deleted (with successor) / fabricated / NMDP MAC code (seen, not expanded) / KIR name (out of scope, not checked). Nomenclature checking against a pinned IPD-IMGT/HLA release, not interpretation of a case. Use on any AI-generated or transcribed content mentioning HLA. Send the HLA content only, with patient identifiers removed first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesHLA typing report text, or model output about HLA typing, to scan for allele names. Send the HLA content only: strip patient names, medical record numbers, dates of birth, accession and case identifiers, and any other patient details before sending. The caller is responsible for de-identifying the text; this service neither needs nor wants identifiers and does not store request bodies.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cleanYesThe guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) and KIR allele names (counts.out_of_scope) are not checked — treat them as unverified.
countsYesNumber of distinct tokens per status.
tokensYesEach distinct allele-shaped token found, sorted by token.
releaseYesIPD-IMGT/HLA release every verdict was computed against.
attributionNoData attribution (IPD-IMGT/HLA, CC-BY-ND).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / tokens / items / properties / status / description
      Previous value: -"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); group: a real G/P group; deleted: no longer current (see successor); fabricated_group: G/P-shaped but no such group; hallucinated: never existed in any release; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand; out_of_scope: a KIR allele name (IPD-KIR), outside IPD-IMGT/HLA and not checked."New value: +"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate, and a legacy spelling such as A*0201, Cw*0702 or Cw*07:02 by the current name it stands for, with flag deprecated_name); group: a real G/P group; deleted: no longer current (see successor); fabricated_group: G/P-shaped but no such group; hallucinated: never existed in any release; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand; out_of_scope: a KIR allele name (IPD-KIR), outside IPD-IMGT/HLA and not checked."
  2. Changed5 schema fields changed
    • changedOutput schema / properties / clean / description
      Previous value: -"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) are not checked — treat them as unverified."New value: +"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) and KIR allele names (counts.out_of_scope) are not checked — treat them as unverified."
    • addedOutput schema / properties / counts / properties / out_of_scope
      Added value: +{
      +  "description": "KIR allele names (KIR3DL1*001) seen; a gene family outside IPD-IMGT/HLA, not checked.",
      +  "type": "integer"
      +}
    • changedOutput schema / properties / counts / required
      Previous value: -[
      -  "valid",
      -  "deleted",
      -  "group",
      -  "fabricated_group",
      -  "hallucinated",
      -  "mac_code"
      -]New value: +[
      +  "valid",
      +  "deleted",
      +  "group",
      +  "fabricated_group",
      +  "hallucinated",
      +  "mac_code",
      +  "out_of_scope"
      +]
    • changedOutput schema / properties / tokens / items / properties / status / description
      Previous value: -"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); group: a real G/P group; deleted: no longer current (see successor); fabricated_group: G/P-shaped but no such group; hallucinated: never existed in any release; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand."New value: +"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); group: a real G/P group; deleted: no longer current (see successor); fabricated_group: G/P-shaped but no such group; hallucinated: never existed in any release; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand; out_of_scope: a KIR allele name (IPD-KIR), outside IPD-IMGT/HLA and not checked."
    • changedOutput schema / properties / tokens / items / properties / status / enum
      Previous value: -[
      -  "valid",
      -  "group",
      -  "deleted",
      -  "fabricated_group",
      -  "hallucinated",
      -  "mac_code"
      -]New value: +[
      +  "valid",
      +  "group",
      +  "deleted",
      +  "fabricated_group",
      +  "hallucinated",
      +  "mac_code",
      +  "out_of_scope"
      +]
  3. Changed5 schema fields changed
    • changedOutput schema / properties / clean / description
      Previous value: -"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text."New value: +"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) are not checked — treat them as unverified."
    • addedOutput schema / properties / counts / properties / mac_code
      Added value: +{
      +  "description": "NMDP multiple allele codes (A*02:AB) seen but not expanded.",
      +  "type": "integer"
      +}
    • changedOutput schema / properties / counts / required
      Previous value: -[
      -  "valid",
      -  "deleted",
      -  "group",
      -  "fabricated_group",
      -  "hallucinated"
      -]New value: +[
      +  "valid",
      +  "deleted",
      +  "group",
      +  "fabricated_group",
      +  "hallucinated",
      +  "mac_code"
      +]
    • changedOutput schema / properties / tokens / items / properties / status / description
      Previous value: -"valid: assigned (or a valid prefix); group: a real G/P group; deleted: no longer current (see successor); fabricated_group: G/P-shaped but no such group; hallucinated: never existed in any release."New value: +"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); group: a real G/P group; deleted: no longer current (see successor); fabricated_group: G/P-shaped but no such group; hallucinated: never existed in any release; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand."
    • changedOutput schema / properties / tokens / items / properties / status / enum
      Previous value: -[
      -  "valid",
      -  "group",
      -  "deleted",
      -  "fabricated_group",
      -  "hallucinated"
      -]New value: +[
      +  "valid",
      +  "group",
      +  "deleted",
      +  "fabricated_group",
      +  "hallucinated",
      +  "mac_code"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / text / description
      Previous value: -"Free text to scan."New value: +"HLA typing report text, or model output about HLA typing, to scan for allele names. Send the HLA content only: strip patient names, medical record numbers, dates of birth, accession and case identifiers, and any other patient details before sending. The caller is responsible for de-identifying the text; this service neither needs nor wants identifiers and does not store request bodies."
  5. First observed

TDQS

A4.2/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-open-world), and the description adds real context on top: the check is against a pinned IPD-IMGT/HLA release, KIR names are out of scope and left unchecked, MAC codes are recognized but not expanded, and patient identifiers are neither needed nor wanted. It stops short of describing rate limits, error behavior, or how results map to the classification buckets.

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?

The core action is front-loaded and every sentence carries information: the classification taxonomy, the 'not interpretation' scope boundary, the usage trigger, and the de-identification requirement. The slash-delimited classification list is dense and slightly hard to parse, but nothing is redundant.

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

Completeness5/5

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

With an output schema present, return values need not be explained, and the description still covers everything an agent needs before calling: what is scanned, what the categories mean, the reference-release pinning, the KIR/MAC edge cases, and the de-identification obligation.

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?

There is a single parameter with 100% schema description coverage, so the schema already carries the semantics. The description restates the de-identification instruction rather than adding format, size, or content-shape detail beyond what the schema says, which is the baseline case for a fully documented parameter.

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 (scan/classify) and a specific resource (free-text HLA typing report or model output), then enumerates the exact output classes (valid, legacy, G-P group, deleted, fabricated, MAC, KIR). It also implicitly separates itself from structured-input siblings like validate_gl_string or normalize_allele by scoping itself to raw text, and states the boundary 'not interpretation of a case.'

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 states when to reach for it ('Use on any AI-generated or transcribed content mentioning HLA') and the precondition for sending input ('Send the HLA content only, with patient identifiers removed first'). It does not name an alternative sibling or an explicit when-not condition, so it falls short of a full routing rule.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.