NPPES NPI Registry MCP by usefulapi
Server Details
Look up US healthcare providers and organisations by NPI.
- Status
- Healthy
- Uptime
- 54.9% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 4 tools
The four tools have distinct primary purposes: exact NPI lookup, general multi-criteria search, individual-only search, and organization-only search. However, nppes_search overlaps functionally with the two specialized search tools, creating some risk that an agent defaults to it unnecessarily, though the descriptions clearly guide when to use each.
All tools use the consistent prefix 'nppes_' and snake_case, following a predictable action_object pattern (lookup_npi, search, search_individuals, search_organizations). The naming is immediately readable and leaves no ambiguity about the tool family.
Four tools is a lean, well-scoped set for a read-only registry API. Each tool covers a clear use case (exact lookup, general search, and two specialized searches), though the two specialized tools could arguably be folded into the general search, making the count slightly redundant but not excessive.
The surface covers the core read-only operations of the NPPES registry: exact NPI lookup and multi-criteria search for both individuals and organizations. Minor gaps exist, such as batch lookup or explicit pagination controls, but the essential retrieval workflows are present with no obvious dead ends.
Available Tools
4 toolsnppes_lookup_npiLook up a provider by NPI numberARead-onlyInspect
Look up a single healthcare provider by their exact 10-digit National Provider Identifier (NPI). Returns the full registry record: basic info, addresses, taxonomies/specialties, identifiers and other names. NPPES Read API v2.1.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | The 10-digit NPI number to look up, e.g. '1467550004' (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description adds real value beyond that by disclosing the breadth of the return payload (basic info, addresses, taxonomies/specialties, identifiers, other names) and pinning the backing API (NPPES Read API v2.1). It does not mention rate limits or error behavior for an unknown NPI, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a provenance tag, all front-loaded: the lookup action and its constraining qualifier come first, the return contents second. Nothing is redundant with the title, and no sentence fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup with no output schema, the description supplies the input constraint, the identity of the operation, and a summary of what comes back. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'number' parameter is already documented with the same pattern (^\d{10}$) and an example. The description reinforces the 10-digit/exact constraint but adds no syntax, format, or sourcing detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: look up a *single* provider by *exact* 10-digit NPI, then enumerates what the record contains (addresses, taxonomies, identifiers, other names). The words 'single' and 'exact' cleanly distinguish it from the sibling search tools without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing 'single ... exact 10-digit NPI' implies when this beats a search tool, but the description never names nppes_search/nppes_search_individuals/nppes_search_organizations or states the condition (e.g., 'use search when you only have a name or partial NPI'). Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nppes_searchSearch the NPI registry (all criteria)ARead-onlyInspect
Full-power search of the NPPES NPI Registry across ANY combination of criteria — individual name, organization name, NPI number, taxonomy/specialty, and location. Use nppes_search_individuals / nppes_search_organizations for the common cases; use this when you need mixed or advanced criteria. The API requires at least one meaningful search parameter. NPPES Read API v2.1.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City of the provider's address. | |
| skip | No | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). | |
| limit | No | Max number of records to return (1–200, default 10). | |
| state | No | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. | |
| number | No | Exact 10-digit NPI number. | |
| last_name | No | Individual provider last name (trailing '*' wildcard allowed). | |
| first_name | No | Individual provider first name (trailing '*' wildcard allowed). | |
| postal_code | No | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. | |
| country_code | No | Two-letter country code (default 'US'). Use 'US' for domestic addresses. | |
| name_purpose | No | For name matching: 'PROVIDER' (default) or 'AO' (authorized official). | |
| address_purpose | No | Which address the city/state/postal_code filters apply to (LOCATION = practice address). | |
| enumeration_type | No | Restrict to 'NPI-1' (individuals) or 'NPI-2' (organizations). Omit to search both. | |
| organization_name | No | Organization name (trailing '*' wildcard allowed). | |
| taxonomy_description | No | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description usefully adds the invocation constraint that at least one meaningful parameter is required and pins the backing API version (NPPES Read API v2.1). It does not discuss rate limits, result caps, or pagination behavior, but skip/limit semantics are already covered in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: capability, routing decision, and precondition, in that order. No filler and the most decision-relevant content leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search with a fully documented 14-parameter schema and no output schema, the description covers capability, routing, and the one hard API constraint. It stops short of describing result shape or ordering, which is a minor gap against the tool's breadth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% across all 14 parameters, with enums and wildcard/pagination rules documented in-schema, so the baseline is 3. The description only categorizes the criteria axes and adds no syntax, format, or interaction detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Full-power search of the NPPES NPI Registry') and enumerates the criteria axes it spans (name, organization, NPI, taxonomy, location). It explicitly names the two sibling tools it is not, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives ('nppes_search_individuals / nppes_search_organizations for the common cases') and the exact condition that selects this one ('when you need mixed or advanced criteria'). It also states a hard precondition: the API requires at least one meaningful search parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nppes_search_individualsSearch individual providersARead-onlyInspect
Search for INDIVIDUAL healthcare providers (NPI-1: doctors, nurses, therapists, etc.) by name, specialty (taxonomy) and/or location. Provide at least one meaningful criterion beyond a location. Name fields support a trailing '*' wildcard (min 2 chars before it). NPPES Read API v2.1.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City of the provider's address. | |
| skip | No | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). | |
| limit | No | Max number of records to return (1–200, default 10). | |
| state | No | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. | |
| last_name | No | Provider last name. A trailing '*' wildcard is allowed, e.g. 'Smi*'. | |
| first_name | No | Provider first name. A trailing '*' wildcard is allowed, e.g. 'Jo*'. | |
| postal_code | No | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. | |
| country_code | No | Two-letter country code (default 'US'). Use 'US' for domestic addresses. | |
| name_purpose | No | Which name to match: 'PROVIDER' (default) matches the provider's own name; 'AO' matches an authorized official. | |
| address_purpose | No | Which address the city/state/postal_code filters apply to (LOCATION = practice address). | |
| taxonomy_description | No | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries the rest: it adds the wildcard rules, the minimum 2-character prefix, and the practical constraint that a location alone is insufficient input. It does not mention result size or pagination behavior, but the added query-construction behavior is genuine value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the scope-defining first clause, followed by the usage constraint and wildcard rule. No filler; every sentence carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only a readOnlyHint annotation, the description must cover query semantics, which it does well for an 11-parameter search. It omits any mention of result-set size or pagination (skip/limit), which the schema covers, leaving a minor gap for an agent planning multi-page retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 11 parameters, so the schema already documents city, state, name_purpose, address_purpose, taxonomy, etc. The description only restates the wildcard behavior already present in the schema (adding a small note on the 2-char minimum), so it does not materially extend parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search for INDIVIDUAL healthcare providers') and pins the scope to NPI-1 with concrete examples (doctors, nurses, therapists). The capitalized INDIVIDUAL and NPI-1 labeling clearly contrasts it with the sibling nppes_search_organizations, so an agent can distinguish them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Provide at least one meaningful criterion beyond a location" gives actionable guidance on how to form a valid query. However, it never names alternatives or routing conditions (e.g. use nppes_lookup_npi when an NPI is already known, or nppes_search for a combined lookup), so when-to-use-vs-sibling is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nppes_search_organizationsSearch organization providersARead-onlyInspect
Search for ORGANIZATION healthcare providers (NPI-2: hospitals, clinics, group practices, pharmacies, labs, etc.) by organization name, specialty (taxonomy) and/or location. The organization_name field supports a trailing '*' wildcard (min 2 chars before it). NPPES Read API v2.1.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City of the provider's address. | |
| skip | No | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). | |
| limit | No | Max number of records to return (1–200, default 10). | |
| state | No | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. | |
| postal_code | No | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. | |
| country_code | No | Two-letter country code (default 'US'). Use 'US' for domestic addresses. | |
| address_purpose | No | Which address the city/state/postal_code filters apply to (LOCATION = practice address). | |
| organization_name | No | Organization (legal business) name. A trailing '*' wildcard is allowed, e.g. 'Kaiser*'. | |
| taxonomy_description | No | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds the wildcard gotcha (trailing '*' with a 2-char minimum) and the API version (NPPES Read API v2.1), which is modestly useful, but it says nothing about rate limits, result shape, or whether any filter is mandatory. Comparable in value to the calibration 'date range' example, so a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the tool's identity and scope before the wildcard caveat and version tag. Nothing is redundant, though the trailing version note is low-value filler for an agent choosing a tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, zero-required read tool with high schema coverage, the core intent is covered, but two things are missing: whether at least one filter is required to get meaningful results, and any hint of the returned NPI organization record (no output schema exists to carry that). Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters (including limits, skip pagination bounds, state/postal_code formats, address_purpose enum) are already documented. The description only restates the organization_name wildcard and the taxonomy partial-match rule the schema already carries, adding no new syntax or semantics. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) plus the resource and scope (ORGANIZATION healthcare providers, NPI-2), and enumerates examples (hospitals, clinics, pharmacies, labs). The uppercase ORGANIZATION / NPI-2 framing cleanly separates it from the sibling nppes_search_individuals without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the usable filter dimensions (organization name, taxonomy/specialty, location), which implies when the tool applies, but never names an alternative tool or states an exclusion (e.g., use nppes_search_individuals for people). Routing is left to inference from the ORGANIZATION capitalization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
nppes_lookup_npi1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
nppes_search1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
nppes_search_individuals1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
nppes_search_organizations1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
4 tool updates
- First observed
nppes_lookup_npi - First observed
nppes_search - First observed
nppes_search_individuals - First observed
nppes_search_organizations
Related MCP Connectors
Healthcare provider & compliance intel: NPPES lookup, OIG/SAM exclusion screening, FDA enforcement.
Search a healthcare provider directory and get full provider details by id.
Search NPPES providers and resolve NUCC specialty codes via MCP over STDIO or Streamable HTTP.
US healthcare public data, one endpoint: prices, Medicare, MA benefits, Stars, Medicaid, providers.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying healthcare provider information from the CMS NPI Registry using a 10-digit National Provider Identifier (NPI).9 npmMIT
- FlicenseNot gradedqualityCmaintenanceProvides tools to look up healthcare providers and organizations by NPI number and to search the CMS NPPES NPI Registry by name, location, taxonomy, and other criteria.-
- AlicenseNot gradedqualityAmaintenanceLook up US healthcare providers in the NPPES NPI registry and resolve NUCC specialty codes via MCP.342 npm1Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables interaction with the CMS NPPES NPI Registry to search, lookup, and validate National Provider Identifier records. It features offline-capable search using a local SQLite database that automatically updates with the latest provider data.-
Glama MCP Gateway
Add one secure layer between your agents and this server.