---
title: "Remote MCP endpoint (Streamable HTTP transport, JSON-RPC 2.0, stateless)"
method: POST
path: "/mcp"
---

# Remote MCP endpoint (Streamable HTTP transport, JSON-RPC 2.0, stateless)

`POST /mcp`

## Request

- Base URL: `https://api.hlaverify.com`
- URL: `https://api.hlaverify.com/mcp`
- Auth: one of:
  - none
  - API key in header `X-API-Key`

Tools: verify_text, normalize_allele, allele_info, match_score, check_typing, donor_compat, validate_gl_string, pgx_lookup, pgx_pair, translate_names, release_diff, allele_history, beta_signup, research_access, about. Every tool call but about, beta_signup and research_access consumes one call of the caller's daily quota, the same one /v1/* spends. donor_compat, pgx_lookup and pgx_pair are decision support only; not a medical device. beta_signup and research_access are the only tools that write. Same input rule as REST: send allele names, typing strings, GL strings and HLA report text, never patient identifiers. See the MCP for agents section above.

## Request body

- object
  - `jsonrpc` '2.0', required
  - `id` unknown
  - `method` string, required
  - `params` object

## Response `200`

JSON-RPC 2.0 response or error

## Other responses

- `202`: notification acknowledged (no body)
- `405`: GET not supported
- `429`: rate limited (per-minute burst). A spent DAILY quota is not a 429 here: it is a 200 JSON-RPC result whose tool result has isError:true and names the UTC-midnight reset, with x-hla-verify-daily-remaining: 0 and Retry-After on the response.

---

[API](https://skmtc.dev/hlaverify/apis/hla-verify.md) · [All operations](https://skmtc.dev/hlaverify/apis/hla-verify/llms.txt) · [OpenAPI document](https://skmtc.dev/hlaverify/apis/hla-verify/revisions/40cd5e7d134d?raw)
