HLA-Verify
by hlaverify.com · remote · no sign-in to list tools · v1.0.1 · published by com.hlaverify
HLA nomenclature and match checks against a pinned IPD-IMGT/HLA release. No patient identifiers.
15 tools: 3 do something that can't be undone, 8 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone3Claude Code: ask: see these tools
- Changes things8Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http hla-verify https://api.hlaverify.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Warndonor_compat
The server marks "donor_compat" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.recipient): what it sends cannot be taken back.
- Warnpgx_pair
The server marks "pgx_pair" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.recipient): what it sends cannot be taken back.
- Warntranslate_names
The server marks "translate_names" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Can't be undone 3Claude Code: ask
donor_compatDonor/recipient immunogenetic compatibility under two published rule sets: HLA-B leader match (-21 M/T, Petersdorf 2020) for a single HLA-B mismatch, and KIR ligand (C1/C2/Bw4) cla…1 finding
Why it is in this group
- The input addresses people (input.recipient): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "donor_compat" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.recipient): what it sends cannot be taken back.
Description, as the server wrote it Donor/recipient immunogenetic compatibility under two published rule sets: HLA-B leader match (-21 M/T, Petersdorf 2020) for a single HLA-B mismatch, and KIR ligand (C1/C2/Bw4) class comparison, computed over each side's full typing QC. Rule checking against published frameworks; it does not rank or recommend a donor. recipient/donor: {"A": [...], "B": [...], "C": [...], "DRB1": [...], ...} (allele strings only, no patient identifiers). Decision support only; not a medical device.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
pgx_pairFor a donor-recipient pair, which genome carries each actionable HLA-drug association.1 finding
Why it is in this group
- The input addresses people (input.recipient): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "pgx_pair" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.recipient): what it sends cannot be taken back.
Description, as the server wrote it For a donor-recipient pair, which genome carries each actionable HLA-drug association. Screens both typings as pgx_lookup does and marks every CPIC level-A, allele-positive association in_recipient, in_donor, discordant (present in exactly one) and whose_hla (both / recipient_only / donor_only). Guideline lookup over published CPIC and PharmGKB associations, keyed by two-field HLA allele. Decision support only; not a medical device. After an allogeneic transplant the recipient's blood carries the donor's genome, and which genome should drive an HLA-mediated drug alert is an open question (NCT06856226); this lookup reports both and decides nothing. Allele strings only, no patient identifiers.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
translate_namesTranslate HLA allele names from one IPD-IMGT/HLA release to another, through each allele's HLA ID, using the official Allelelist_history.txt (every release since 1.05.0).1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "translate_names" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Translate HLA allele names from one IPD-IMGT/HLA release to another, through each allele's HLA ID, using the official Allelelist_history.txt (every release since 1.05.0). Give the names as they were written in release `from` (omit `from` to accept a name used in any release); `to` defaults to the current release. Each row says unchanged, renamed (to_name), deleted (reason, successor and its name in `to`), not_yet_named, not_in_from_release, ambiguous (each allele listed) or unknown. Use it when data typed under an older release has to be compared with or reported under a newer one. Lab shorthand (B*1501, A*02:XX) belongs in normalize_allele first. Allele strings only, no patient identifiers.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
Changes things 8Claude Code: ask
aboutWhat this server is and is not, what to send it, benchmark evidence for why to use it, the beta state, and terms.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it What this server is and is not, what to send it, benchmark evidence for why to use it, the beta state, and terms.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
allele_historyEvery name the allele behind an HLA name has had, release by release since IPD-IMGT/HLA 1.05.0: its HLA ID, current name, the first and last release that used this name, the full t…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Every name the allele behind an HLA name has had, release by release since IPD-IMGT/HLA 1.05.0: its HLA ID, current name, the first and last release that used this name, the full timeline of names, and the deletion note if the name was retired. `as_of` adds what it was called in that release. Use it to answer when a name appeared, changed or disappeared. An allele string only, no patient identifiers.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
allele_infoLook up one name in the pinned release and return what it is: assigned (G/P group, first release, confirmed status, WMDA serology, null flag), valid_prefix (member count and sample…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Look up one name in the pinned release and return what it is: assigned (G/P group, first release, confirmed status, WMDA serology, null flag), valid_prefix (member count and sample, plus resolution: what a name with fewer than four fields does and does not distinguish), group (a G or P group name: member count and sample), or deleted (successor). Reported shorthands are accepted as /v1/normalize accepts them — legacy spellings (A*0101, Cw*0702, Cw*07:02), the XX code (A*02:XX), two-field A*02:01g, an optional HLA- prefix — and answer with the facts of the name they stand for plus resolves_to and a flag (deprecated_name, xx_code, lg_notation); an NMDP multiple allele code (A*02:AB) returns mac_code, recognised but not expanded. Not found if the name has never existed in any release.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
beta_signupPut a user on the free public beta's notification list for paid API keys.No findings
Why it is in this group
- The description's first verb is "put": a word for a change.
Description, as the server wrote it Put a user on the free public beta's notification list for paid API keys. Ask before calling: it records the address they give you. Re-signing the same address is safe (status already_recorded). Someone who needs a higher rate limit today should email hello@hlaverify.com for a beta key instead of waiting.
Annotations the server declares
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
check_typingQC-check one HLA typing (all loci) against the pinned release: resolves every reported allele, flags unresolvable/outdated/locus-mismatched/null alleles, flags too-many/single/homo…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it QC-check one HLA typing (all loci) against the pinned release: resolves every reported allele, flags unresolvable/outdated/locus-mismatched/null alleles, flags too-many/single/homozygous per locus, computes the B-leader (-21 M/T) and KIR-ligand (C1/C2/Bw4) profile, and DRB3/4/5 expected-vs-reported. Nomenclature and internal-consistency checking of the report, not clinical interpretation. typing: {"A": ["A*01:01", "A*02:01"], "B": [...], "DRB1": [...], ...} (any nomenclature era, G/P group names, A*02:XX and two-field A*02:01g included; NMDP MAC codes are flagged, not expanded; allele strings only, no patient identifiers).
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
normalize_alleleNormalize one reported HLA allele name (any era or reporting shorthand: legacy A*0101, Cw*0702 or Cw*07:02, G/P group names, A*02:XX, two-field A*02:01g, optional HLA- prefix) to c…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Normalize one reported HLA allele name (any era or reporting shorthand: legacy A*0101, Cw*0702 or Cw*07:02, G/P group names, A*02:XX, two-field A*02:01g, optional HLA- prefix) to current 2-field form, with G group, P group, serologic equivalent, and flags. NMDP MAC codes (A*02:AB) are recognised but not expanded (flag mac_code).
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
research_accessApply for free HLA-Verify access for an academic or nonprofit lab.No findings
Why it is in this group
- The description's first verb is "apply": a word for a change.
Description, as the server wrote it Apply for free HLA-Verify access for an academic or nonprofit lab. Ask before calling: it records the address, institution and use case you give it. Approval is manual: a person reads every application, so it is not instant and not guaranteed. If it is approved the applicant is emailed a single-use code that takes 100% off a subscription for 12 months at self-serve checkout, with no card and no contract. Re-applying with the same address is safe (status already_recorded) and never overwrites an application that has already been decided. Commercial labs should buy a tier at https://api.hlaverify.com/pricing instead.
Annotations the server declares
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
verify_textScan HLA typing report text, or model output about HLA, for allele-shaped tokens and classify each one: valid / legacy spelling such as A*0201 or Cw*0702 (valid, with modern form a…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Scan HLA typing report text, or model output about HLA, for allele-shaped tokens and classify each one: valid / legacy spelling such as A*0201 or Cw*0702 (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); a valid token with fewer than four fields carries resolution, what that field count does and does not distinguish. 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.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
Only reads 4Claude Code: allow
match_scoreCount a donor-recipient HLA match by the published counting rules (R1-R6): allele arithmetic over chromosomes, not a donor recommendation.No findings
Why it is in this group
- The description's first verb is "count": a word for reading.
Description, as the server wrote it Count a donor-recipient HLA match by the published counting rules (R1-R6): allele arithmetic over chromosomes, not a donor recommendation. recipient/donor: {"A": ["A*01:01","A*02:01"], "B": [...], ...} (two reported alleles per locus, any nomenclature era including G/P group names such as A*02:01:01G; allele strings only, no patient identifiers). framework: 6/6, 8/8, 10/10, 12/12, or antigen. Returns count, per-locus verdicts, GvH/HvG mismatch counts, and flags; unresolvable typing yields 'potential', never a confident count.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
pgx_lookupWhich drugs an HLA typing carries a published pharmacogenomic association for.No findings
Why it is in this group
- The name "pgx_lookup" says "lookup": a word for reading.
Description, as the server wrote it Which drugs an HLA typing carries a published pharmacogenomic association for. Looks each allele up in hla-pgx-open (CPIC guidelines + PharmGKB clinical annotations, CC BY-SA, snapshot date in every answer) after normalizing the name first, so any era or shorthand works (A*3101, B*5701, HLA-B*15:02:01G) and every conversion leaves a flag. Returns per allele the current name, the two-field form, the flags and the associations (source, drug, evidence level, CPIC testing recommendation, implication, recommendation, guideline or annotation URL, PMIDs), plus summary.actionable: the CPIC level-A, allele-positive rows. Guideline lookup over published CPIC and PharmGKB associations, keyed by two-field HLA allele. Decision support only; not a medical device. After an allogeneic transplant the recipient's blood carries the donor's genome, and which genome should drive an HLA-mediated drug alert is an open question (NCT06856226); this lookup reports both and decides nothing. Allele strings only, no patient identifiers.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
release_diffWhich HLA allele names were added, removed (with the deletion reason and successor) and renamed between two IPD-IMGT/HLA releases, optionally for one locus.No findings
Why it is in this group
- The name "release_diff" says "diff": a word for reading.
Description, as the server wrote it Which HLA allele names were added, removed (with the deletion reason and successor) and renamed between two IPD-IMGT/HLA releases, optionally for one locus. Counts are complete; each list is cut at `limit` and `truncated` says so. Use it to see what a release update changes before re-running or re-reporting typings.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
validate_gl_stringValidate and normalize a GL String (Genotype List, ^ | + ~ / grammar): resolves every allele token, flags outdated/unresolvable names and structural problems (mixed loci within a s…No findings
Why it is in this group
- The name "validate_gl_string" says "validate": a word for reading.
Description, as the server wrote it Validate and normalize a GL String (Genotype List, ^ | + ~ / grammar): resolves every allele token, flags outdated/unresolvable names and structural problems (mixed loci within a slash-list, a repeated locus within a haplotype or across ^ blocks, more than two haplotypes, differing loci across a genotype or genotype list, empty elements), and returns the normalized string. Grammar and nomenclature checking only; send allele names, not patient identifiers.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http hla-verify https://api.hlaverify.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__hla-verify__match_score",
"mcp__hla-verify__validate_gl_string",
"mcp__hla-verify__pgx_lookup",
"mcp__hla-verify__release_diff"
],
"ask": [
"mcp__hla-verify__verify_text",
"mcp__hla-verify__normalize_allele",
"mcp__hla-verify__allele_info",
"mcp__hla-verify__check_typing",
"mcp__hla-verify__donor_compat",
"mcp__hla-verify__pgx_pair",
"mcp__hla-verify__translate_names",
"mcp__hla-verify__allele_history",
"mcp__hla-verify__beta_signup",
"mcp__hla-verify__research_access",
"mcp__hla-verify__about"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as hla-verify. Review it before you use it.