# Minos Health

> Polish ICD-10, ICD-9 PL, ICD-11 PL codes and NFZ JGP hospital grouping from official sources.

- name: pl.minoshealth/mcp
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 95/100
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/pl.minoshealth%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/pl.minoshealth%2Fmcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "minoshealth": {
      "type": "http",
      "url": "https://minoshealth.pl/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-99% +updated-18d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 12 of 12 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,275 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 50 (weight 15)

- warn `stability.changes`: 13 tool changes in 30 days
- fail `stability.rug_pull`: 3 tools kept their name but changed most of their description in 30 days; review before trusting them
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 12, about 3,275 tokens to load them all
- tool set hash: 50de0706d0e6da97d959b658634ded5f
- tools last changed: 2026-10-28T20:11:06.138Z
- badge: [![protogrid quality](https://protogrid.dev/badge/pl.minoshealth/mcp.svg)](https://protogrid.dev/servers/pl.minoshealth/mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-28 `get_jgp_group` changed (description)
  - before: Get one JGP group from the catalog in force on service_date: name, product code, base points per column, scopes, the act and release, the knowledge horizon and its grouping conditions with the directional lists they name. Pass a named list's id and catalog to get_jgp_list for its codes; use compare_jgp_group for changes between dates.
  - after: Get one JGP group from the catalog in force on service_date: name, product code, base points per column, scopes, the act and release, its grouping conditions with the directional lists they name, and NFZ monthly settlement statistics (settled points, not catalog). Pass a list's id and catalog to get_jgp_list; use compare_jgp_group for changes between dates.
- 2026-10-27 `get_source_status` changed (title, description, inputSchema)
  - before: What a watched publisher shows now, as Minos last observed it: RSK (Rejestr Systemów Kodowania) resources and files, BAW NFZ orders and their attachments, or NFZ dictionaries and notices, with versions, publication dates and observation times. Compare with get_service_info for the versions Minos serves.
  - after: Show what a watched publisher lists now, as Minos last observed it: RSK resources and files, BAW NFZ orders and attachments, or NFZ dictionaries and notices, with versions and dates. Reads Minos's last snapshot and never calls the publisher. Compare with get_service_info to see whether Minos serves the newest release.
- 2026-10-27 `group_case` changed (title, description, inputSchema) **meaning changed**
  - before: Run the Minos Gruper (JGP SZP, supported rule subset) on one anonymised hospital stay: candidate groups with status and reasons, the ranking, base and final points with tariff modifiers when bound, the preparation (procedure outcomes, ward-adjusted days, products), underivable groups and limitations. service_date defaults to the discharge day and reporting_month to its month; detail="trace" adds the full routing trace. Send clinical facts only (age, dates, codes, ward codes), never names, PESEL or addresses; nothing is stored.
  - after: Group one anonymised hospital stay with the Minos Gruper (JGP SZP, supported rule subset): candidate groups with reasons, ranking, base and final points, preparation and limitations. Build case from get_case_dictionaries and codes confirmed with get_code. Send clinical facts only, never names, PESEL or addresses; nothing is stored. Reference, not an NFZ decision.
- 2026-10-27 `get_case_dictionaries` changed (title, description, inputSchema)
  - before: The legal dictionaries a stay for group_case needs: ward specialty codes (the VIII part of a department code; hospital wards 4000-4951 by default, wards="all" for every section) and discharge modes, each with its legal act, plus the accepted hospitalization types and product reporting values.
  - after: List the values a group_case stay needs: ward specialty codes (part VIII of a department code; hospital wards 4000-4951, or every section with wards="all") and discharge modes, each with its legal act, plus hospitalization types and product reporting values. Call it before building the case for group_case.
- 2026-10-27 `compare_jgp_group` changed (title, description, inputSchema)
  - before: Compare one JGP group between the catalogs in force on two service dates: act and release on each side, name, base points, scopes and the names of the directional lists its conditions use, plus the list of fields that changed. Read full conditions with get_jgp_group.
  - after: Compare one JGP group between the catalogs in force on two service dates: act, release, name, base points, scopes and condition list names on each side, plus the fields that changed. Use get_jgp_group for the full conditions on one date.
- 2026-10-27 `browse_jgp_catalog` changed (title, description, inputSchema)
  - before: Browse the JGP catalog in force on service_date (default today in Poland): without a section, the sections of catalogs 1a and 1ae with their group counts; with catalog and section, that section's groups with base points.
  - after: Browse the JGP catalog in force on service_date: without catalog and section, the sections of catalogs 1a and 1ae with group counts; with both, that section's groups and base points. Find a group by words with search_codes; open one with get_jgp_group.
- 2026-10-27 `get_jgp_list` changed (title, description, inputSchema)
  - before: The codes of one directional diagnosis or procedure list from the JGP characteristics (attachment 9), by the list id and catalog that get_jgp_group names, one page at a time, on service_date (default today in Poland).
  - after: List the codes of one directional diagnosis or procedure list from JGP attachment 9, one page at a time. Take list_id from conditions.lists[].id and catalog from group.catalog of a get_jgp_group answer, with the same service_date. For the groups that name a given code, use get_code instead.
- 2026-10-27 `get_jgp_group` changed (title, description, inputSchema)
  - before: One JGP group in the catalog in force on service_date (default today in Poland): name, product code, base points per catalog column, scopes, the act and release behind it, the knowledge horizon, and its grouping conditions from the characteristics with the directional lists they name (read a list with get_jgp_list).
  - after: Get one JGP group from the catalog in force on service_date: name, product code, base points per column, scopes, the act and release, the knowledge horizon and its grouping conditions with the directional lists they name. Pass a named list's id and catalog to get_jgp_list for its codes; use compare_jgp_group for changes between dates.
- 2026-10-27 `map_icd10_icd11` changed (title, description, inputSchema)
  - before: WHO ICD-10/ICD-11 mapping table rows for one code, verbatim: to_icd11 reads both 10-to-11 tables for a Polish ICD-10 code, to_icd10 the 11-to-10 table for an ICD-11 code. Rows give the WHO table, source row, codes, titles and the ICD-11 URI; WHO states no match type. The tables' ICD-10 side is WHO ICD-10 2019, not the Polish 2008 edition, and ICD-11 is not in force in Poland.
  - after: Read the WHO ICD-10/ICD-11 mapping rows for one code, verbatim: to_icd11 for a Polish ICD-10 code, to_icd10 for an ICD-11 code. WHO states no match type, its ICD-10 side is the 2019 edition, not Polish 2008, and ICD-11 is not in force in Poland: treat a row as a lead and confirm the target with get_code.
- 2026-10-27 `browse_codes` changed (title, description, inputSchema)
  - before: List one level of a classification: the chapters when parent and node are omitted, else the children of the parent code or of a node id from an earlier listing (ICD-11 blocks have a node id but no code). Each child says whether it has children. Long levels stop at 400 entries with truncated=true.
  - after: List one level of ICD-10 PL, ICD-9 PL or ICD-11 PL: the chapters when parent and node are omitted, else the children of parent or of a node id from an earlier listing (ICD-11 blocks have a node id, no code). Levels stop at 400 entries with truncated=true. Use search_codes for words, get_code for one code's details.

Full history: https://api.protogrid.dev/v1/servers/pl.minoshealth%2Fmcp/changes

## Remotes

- https://minoshealth.pl/mcp (streamable-http, auth none, reachable true, uptime30d 0.9861111)

## Packages

_none_

## Tools (12)

- `browse_codes`: List one level of ICD-10 PL, ICD-9 PL or ICD-11 PL: the chapters when parent and node are omitted, else the children of parent or of a node id from an earlier listing (ICD-11 blocks have a node id, no code). Levels stop at 400 entries with truncated=true. Use search_codes for words, get_code for one code's details.
- `browse_jgp_catalog`: Browse the JGP catalog in force on service_date: without catalog and section, the sections of catalogs 1a and 1ae with group counts; with both, that section's groups and base points. Find a group by words with search_codes; open one with get_jgp_group.
- `compare_jgp_group`: Compare one JGP group between the catalogs in force on two service dates: act, release, name, base points, scopes and condition list names on each side, plus the fields that changed. Use get_jgp_group for the full conditions on one date.
- `get_case_dictionaries`: List the values a group_case stay needs: ward specialty codes (part VIII of a department code; hospital wards 4000-4951, or every section with wards="all") and discharge modes, each with its legal act, plus hospitalization types and product reporting values. Call it before building the case for group_case.
- `get_code`: Get one ICD-10 PL, ICD-9 PL or ICD-11 PL code as its page shows it: title, hierarchy, children, notes, attributes, ICD-9 rank, WHO map rows and, for ICD-10 and ICD-9, the JGP groups whose attachment 9 lists name it on service_date. Find the code with search_codes first; open a listed group with get_jgp_group.
- `get_jgp_group`: Get one JGP group from the catalog in force on service_date: name, product code, base points per column, scopes, the act and release, its grouping conditions with the directional lists they name, and NFZ monthly settlement statistics (settled points, not catalog). Pass a list's id and catalog to get_jgp_list; use compare_jgp_group for changes between dates.
- `get_jgp_list`: List the codes of one directional diagnosis or procedure list from JGP attachment 9, one page at a time. Take list_id from conditions.lists[].id and catalog from group.catalog of a get_jgp_group answer, with the same service_date. For the groups that name a given code, use get_code instead.
- `get_service_info`: Get the releases Minos serves: ICD-10 PL, ICD-9 PL and ICD-11 PL versions, validity and licences, JGP grouping availability and knowledge horizon, and the disclaimer. Call it first to learn which service dates are covered; use get_source_status to see what publishers released since.
- `get_source_status`: Show what a watched publisher lists now, as Minos last observed it: RSK resources and files, BAW NFZ orders and attachments, or NFZ dictionaries and notices, with versions and dates. Reads Minos's last snapshot and never calls the publisher. Compare with get_service_info to see whether Minos serves the newest release.
- `group_case`: Group one anonymised hospital stay with the Minos Gruper (JGP SZP, supported rule subset): candidate groups with reasons, ranking, base and final points, preparation and limitations. Build case from get_case_dictionaries and codes confirmed with get_code. Send clinical facts only, never names, PESEL or addresses; nothing is stored. Reference, not an NFZ decision.
- `map_icd10_icd11`: Read the WHO ICD-10/ICD-11 mapping rows for one code, verbatim: to_icd11 for a Polish ICD-10 code, to_icd10 for an ICD-11 code. WHO states no match type, its ICD-10 side is the 2019 edition, not Polish 2008, and ICD-11 is not in force in Poland: treat a row as a lead and confirm the target with get_code.
- `search_codes`: Search ICD-10 PL diagnoses, ICD-9 PL procedures, JGP groups and, when asked, pre-released ICD-11 PL by code or Polish words (diacritics optional). Each hit has its code, title, path and JGP group count; JGP groups are always searched in today's catalog. Open a hit with get_code or get_jgp_group; walk a hierarchy with browse_codes.
