# NPI Who

> US health care providers by NPI, name or phone, with payments, Medicare, OIG and facility data.

- name: io.github.npiwho/npiwho
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 73/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.npiwho%2Fnpiwho
- tools: https://api.protogrid.dev/v1/servers/io.github.npiwho%2Fnpiwho/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "npiwho": {
      "type": "http",
      "url": "https://npiwho.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 97
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-92% +updated-13d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### 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: 71 (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
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: lookup_provider (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); lookup_phone (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); list_facilities (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 846 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

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

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

- tools: 6, about 846 tokens to load them all
- tool set hash: e6c2c1be384e0bd4294c21eb84427b31
- tools last changed: 2026-10-27T01:09:57.907Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.npiwho/npiwho.svg)](https://protogrid.dev/servers/io.github.npiwho/npiwho)
- 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-27 `data_sources` changed (description)
  - before: Which public files this data comes from, their snapshot dates, and what they do not cover.
  - after: Use when asked how current or how reliable the data is, or what it does not include. Which public files this data comes from, their snapshot dates, and what they do not cover.
- 2026-10-27 `list_facilities` changed (description)
  - before: Medicare-certified home health agencies, hospices, hospitals, nursing homes, or HRSA health centers (FQHCs) in a state, optionally one city. Up to 50 rows with page urls; the full list and a CSV are at the state page url.
  - after: Use when the question is about facilities of a kind in a state or city rather than one named provider. Medicare-certified home health agencies, hospices, hospitals, nursing homes, or HRSA health centers (FQHCs) in a state, optionally one city. Up to 50 rows with page urls; the full list and a CSV are at the state page url.
- 2026-10-27 `nearby_providers` changed (description)
  - before: The providers with the same specialty nearest a given provider (by NPI) or a ZIP code and specialty, by distance between ZIP code centres. Up to 12.
  - after: Use when the question is who else does this nearby, or for alternatives to a provider. The providers with the same specialty nearest a given provider (by NPI) or a ZIP code and specialty, by distance between ZIP code centres. Up to 12.
- 2026-10-27 `lookup_phone` changed (description)
  - before: Providers whose registry practice phone, or a phone they published on a claimed page, is this number. Any US format. Providers who asked for their phone to be withheld are not returned.
  - after: Use when the question is who a phone number belongs to. Providers whose registry practice phone, or a phone they published on a claimed page, is this number. Any US format. Providers who asked for their phone to be withheld are not returned.
- 2026-10-27 `search_providers` changed (description)
  - before: Find individual providers or organizations by name, optionally within a state. Returns up to 20 matches, best first, each with its page url. Use lookup_provider on a result for the full record.
  - after: Use when the question names a person or practice but no NPI. Find individual providers or organizations by name, optionally within a state. Returns up to 20 matches, best first, each with its page url. Use lookup_provider on a result for the full record.
- 2026-10-27 `lookup_provider` changed (description)
  - before: One provider by NPI: the registry record, and what the public files have on them (Open Payments total, Medicare billing, OIG exclusion, Medicare clinician record, facility enrollments, claimed-page details) with the page section where each is. The result's url is the page to cite and to send readers to for the detail.
  - after: Use when the question names an NPI, or after search_providers has found the right person. One provider by NPI: the registry record, and what the public files have on them (Open Payments total, Medicare billing, OIG exclusion, Medicare clinician record, facility enrollments, claimed-page details) with the page section where each is. The result's url is the page to cite and to send readers to for the detail.

Full history: https://api.protogrid.dev/v1/servers/io.github.npiwho%2Fnpiwho/changes

## Remotes

- https://npiwho.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9183673)

## Packages

_none_

## Tools (6)

- `data_sources`: Use when asked how current or how reliable the data is, or what it does not include. Which public files this data comes from, their snapshot dates, and what they do not cover.
- `list_facilities`: Use when the question is about facilities of a kind in a state or city rather than one named provider. Medicare-certified home health agencies, hospices, hospitals, nursing homes, or HRSA health centers (FQHCs) in a state, optionally one city. Up to 50 rows with page urls; the full list and a CSV are at the state page url.
- `lookup_phone`: Use when the question is who a phone number belongs to. Providers whose registry practice phone, or a phone they published on a claimed page, is this number. Any US format. Providers who asked for their phone to be withheld are not returned.
- `lookup_provider`: Use when the question names an NPI, or after search_providers has found the right person. One provider by NPI: the registry record, and what the public files have on them (Open Payments total, Medicare billing, OIG exclusion, Medicare clinician record, facility enrollments, claimed-page details) with the page section where each is. The result's url is the page to cite and to send readers to for the detail.
- `nearby_providers`: Use when the question is who else does this nearby, or for alternatives to a provider. The providers with the same specialty nearest a given provider (by NPI) or a ZIP code and specialty, by distance between ZIP code centres. Up to 12.
- `search_providers`: Use when the question names a person or practice but no NPI. Find individual providers or organizations by name, optionally within a state. Returns up to 20 matches, best first, each with its page url. Use lookup_provider on a result for the full record.
