MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Compare up to 25 certified skilled nursing facilities by CMS CCN or web slug. Returns the same decision fields as search_facilities (ratings, nurse hours, turnover, inspection score, beds, fines, maps) as a table. Prefer this over looping get_facility against the 60 requests/minute limit.
CMS CCNs (provnum) or web slugs. Max 25.
Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Compare up to 25 certified skilled nursing facilities by CMS CCN or web slug. Returns the same decision fields as search_facilities (ratings, nurse hours, turnover, inspection score, beds, fines, maps) as a table. Prefer this over looping get_facility against the 60 requests/minute limit.
| Argument | Type | Description |
|---|---|---|
| ids* | array | CMS CCNs (provnum) or web slugs. Max 25. |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
{
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "CMS CCNs (provnum) or web slugs. Max 25."
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
}
}
}Get latest source dataset dates and row counts. For prior months, call list_file_dates and pass filedate to other tools.
No arguments.
{
"type": "object",
"properties": {}
}Get one certified skilled nursing facility by CMS CCN (provnum) or web slug. Returns the same decision fields as search_facilities: ratings, nurse hours (HPRD), nurse/RN turnover, weighted inspection score, beds, fines, abuse/SFF flags, and maps deep-links. Use data_as_of as the CMS vintage; do not invent ratings or hours that are missing. Defaults to the latest monthly snapshot; pass filedate from list_file_dates for a prior month.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
}
}
}Monitor one skilled nursing facility across two CMS monthly files. Defaults to latest vs the prior snapshot. Returns field-level diffs for stars, nurse hours, turnover, inspection score, abuse icon, high-performing icon, fines, and occupancy. Care Compare shows this month only — rerun after the next file.
| Argument | Type | Description |
|---|---|---|
| id* | string | CMS CCN (provnum) or web slug |
| to | string | Later filedate. Omit to use the latest CMS file. |
| from | string | Earlier filedate YYYY-MM-DD. Omit to use the snapshot before to. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "CMS CCN (provnum) or web slug"
},
"to": {
"type": "string",
"description": "Later filedate. Omit to use the latest CMS file."
},
"from": {
"type": "string",
"description": "Earlier filedate YYYY-MM-DD. Omit to use the snapshot before to."
}
}
}Get CMS ownership records for one facility — who owns or manages the building. Defaults to the latest CMS monthly snapshot; pass filedate from list_file_dates to query a prior month.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
}
}
}Get an owner portfolio by web_owner slug, including facility names, locations, and overall stars. Defaults to the latest CMS monthly snapshot; pass filedate from list_file_dates to query a prior month.
| Argument | Type | Description |
|---|---|---|
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
| web_owner* | string |
{
"type": "object",
"required": [
"web_owner"
],
"properties": {
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
},
"web_owner": {
"type": "string"
}
}
}List distinct CMS ProviderInfo values and counts for a field. Omit field to see the catalog. Use field=ownership before search_facilities to get the 13 ownership types. city requires state.
| Argument | Type | Description |
|---|---|---|
| field | string | ProviderInfo field. Omit to list allowed fields. ownership is the search_facilities filter. |
| state | string | Optional two-letter state. Required when field=city. |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
{
"type": "object",
"properties": {
"field": {
"enum": [
"ownership",
"state",
"city",
"sffstatus",
"abuse_icon",
"icon_hi_perf",
"certification",
"inhosp",
"ccrc_facil",
"overall_rating",
"survey_rating",
"quality_rating",
"staffing_rating",
"oldsurvey",
"chow_last_12mos",
"chainname",
"chain_name",
"chainid",
"chain_id"
],
"type": "string",
"description": "ProviderInfo field. Omit to list allowed fields. ownership is the search_facilities filter."
},
"state": {
"type": "string",
"description": "Optional two-letter state. Required when field=city."
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
}
}
}List CMS monthly snapshot dates available in the database (newest first), plus the current filedate and known unpublished months. Use a returned date as filedate on other tools to retrieve a prior month instead of the latest data.
No arguments.
{
"type": "object",
"properties": {}
}Find certified US skilled nursing facilities near an address or in a city. Filter by CMS ownership type (call list_distinct_values field=ownership first), star rating, abuse flag, high-performing icon, or Special Focus status. Returns ownership, ratings, nurse hours (HPRD), nurse/RN turnover, weighted inspection score, beds, fines, straight-line distance_miles, and maps deep-links. distance_miles is crow-flies, not drive time — use maps.google_dir / a mapping service for minutes.
| Argument | Type | Description |
|---|---|---|
| q | string | |
| zip | string | |
| city | string | |
| sort | string | Sort key: overall_rating (default, desc), survey_rating, quality_rating, staffing_rating, distance (asc, straight-line miles), tothrd or total_nurse_hours (desc), totalnursingstaffturnover or nurse_turnover (asc), weighted_all_cycles_score or survey_score (asc). Unknown values fall back to overall_rating. |
| limit | integer | |
| state | string | |
| offset | integer | |
| address | string | Street address with city and state, or a street and ZIP. Geocoded by the Census Bureau as the distance origin. A city, place name, or ZIP alone will not match. |
Find certified US SNFs by CMS ownership type (ProviderInfo.ownership). Call list_distinct_values with field=ownership first. Same result schema as search_facilities; combine with state, city, ZIP, or address.
| Argument | Type | Description |
|---|---|---|
| q | string | |
| zip | string | |
| city | string | |
| sort | string | |
| limit | integer | |
| state | string | |
| offset | integer | |
| address | string | Street address with city and state, or a street and ZIP. Geocoded by the Census Bureau as the distance origin. A city, place name, or ZIP alone will not match. |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
| ownership* | string | CMS ownership type. Case-insensitive. Prefixes For profit, Non profit, and Government match that kind. Exact values from list_distinct_values field=ownership, e.g. "For profit - Limited Liability company". |
Search nursing-home owners by name. Defaults to the latest CMS monthly snapshot; pass filedate from list_file_dates to query a prior month.
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer | |
| offset | integer | |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string"
},
"limit": {
"type": "integer"
},
"offset": {
"type": "integer"
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
}
}
}Aggregate numeric CMS ProviderInfo fields (n, mean, min, max; optional median) across certified SNFs. Prefer this over paging search_facilities for national or grouped stats. Call list_distinct_values for ownership catalogs; call list_file_dates for filedate. Facility-equal means — not bed-weighted. Missing values excluded per metric. Not causal. Not a substitute for get_facility on a named home. Rate limit 60 requests/minute.
| Argument | Type | Description |
|---|---|---|
| zip | string | |
| city | string | City filter. Requires state. |
| state | string | |
| metrics* | array | Metric keys: tothrd, rnhrd, weekend_tothrd, weekend_rnhrd, totalnursingstaffturnover, registerednurseturnover, weighted_all_cycles_score, overall_rating, survey_rating, staffing_rating, quality_rating, bedcert, restot, fine_tot, fine_cnt, occupancy (and documented synonyms). |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
| group_by | string | Omit for one national (or filter-scoped) row per metric. ownership_kind is Government | For profit | Non profit. |
| ownership | string | CMS ownership type. Prefixes For profit, Non profit, and Government match that kind. Applied before aggregation. |
| filedate | string | Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates. |
| ownership | string | CMS ownership type from ProviderInfo.ownership. Case-insensitive. Prefixes For profit, Non profit, and Government match that kind. Call list_distinct_values with field=ownership for the 13 exact values (e.g. "For profit - Limited Liability company"). |
| sffstatus | string | When truthy, keep only Special Focus Facility or candidate homes (non-empty sffstatus). |
| abuse_icon | string | CMS abuse icon filter. Y/yes/true/1 keeps only flagged homes; other values keep homes without the flag. |
| icon_hi_perf | string | CMS high-performing icon (Risk-Based Survey eligibility). Y/yes/true/1 keeps only homes with the icon; other values keep homes without it. Point-in-time, not a permanent award. |
| radius_miles | number |
| max_overall_rating | integer | Maximum CMS overall star rating (1-5). |
| min_overall_rating | integer | Minimum CMS overall star rating (1-5). |
{
"type": "object",
"properties": {
"q": {
"type": "string"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"sort": {
"enum": [
"overall_rating",
"survey_rating",
"quality_rating",
"staffing_rating",
"distance",
"tothrd",
"total_nurse_hours",
"totalnursingstaffturnover",
"nurse_turnover",
"weighted_all_cycles_score",
"survey_score"
],
"type": "string",
"description": "Sort key: overall_rating (default, desc), survey_rating, quality_rating, staffing_rating, distance (asc, straight-line miles), tothrd or total_nurse_hours (desc), totalnursingstaffturnover or nurse_turnover (asc), weighted_all_cycles_score or survey_score (asc). Unknown values fall back to overall_rating."
},
"limit": {
"type": "integer"
},
"state": {
"type": "string"
},
"offset": {
"type": "integer"
},
"address": {
"type": "string",
"description": "Street address with city and state, or a street and ZIP. Geocoded by the Census Bureau as the distance origin. A city, place name, or ZIP alone will not match."
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
},
"ownership": {
"type": "string",
"description": "CMS ownership type from ProviderInfo.ownership. Case-insensitive. Prefixes For profit, Non profit, and Government match that kind. Call list_distinct_values with field=ownership for the 13 exact values (e.g. \"For profit - Limited Liability company\")."
},
"sffstatus": {
"type": "string",
"description": "When truthy, keep only Special Focus Facility or candidate homes (non-empty sffstatus)."
},
"abuse_icon": {
"type": "string",
"description": "CMS abuse icon filter. Y/yes/true/1 keeps only flagged homes; other values keep homes without the flag."
},
"icon_hi_perf": {
"type": "string",
"description": "CMS high-performing icon (Risk-Based Survey eligibility). Y/yes/true/1 keeps only homes with the icon; other values keep homes without it. Point-in-time, not a permanent award."
},
"radius_miles": {
"type": "number"
},
"max_overall_rating": {
"type": "integer",
"description": "Maximum CMS overall star rating (1-5)."
},
"min_overall_rating": {
"type": "integer",
"description": "Minimum CMS overall star rating (1-5)."
}
}
}| radius_miles | number |
| max_overall_rating | integer |
| min_overall_rating | integer |
{
"type": "object",
"required": [
"ownership"
],
"properties": {
"q": {
"type": "string"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"sort": {
"enum": [
"overall_rating",
"survey_rating",
"quality_rating",
"staffing_rating",
"distance",
"tothrd",
"total_nurse_hours",
"totalnursingstaffturnover",
"nurse_turnover",
"weighted_all_cycles_score",
"survey_score"
],
"type": "string"
},
"limit": {
"type": "integer"
},
"state": {
"type": "string"
},
"offset": {
"type": "integer"
},
"address": {
"type": "string",
"description": "Street address with city and state, or a street and ZIP. Geocoded by the Census Bureau as the distance origin. A city, place name, or ZIP alone will not match."
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
},
"ownership": {
"type": "string",
"description": "CMS ownership type. Case-insensitive. Prefixes For profit, Non profit, and Government match that kind. Exact values from list_distinct_values field=ownership, e.g. \"For profit - Limited Liability company\"."
},
"radius_miles": {
"type": "number"
},
"max_overall_rating": {
"type": "integer"
},
"min_overall_rating": {
"type": "integer"
}
}
}| sffstatus | string |
| abuse_icon | string |
| icon_hi_perf | string | CMS high-performing icon. Y keeps homes currently eligible for a Risk-Based Survey. |
| include_median | boolean | When true, each stats object also includes median. Default false. |
| max_overall_rating | integer |
| min_overall_rating | integer |
{
"type": "object",
"required": [
"metrics"
],
"properties": {
"zip": {
"type": "string"
},
"city": {
"type": "string",
"description": "City filter. Requires state."
},
"state": {
"type": "string"
},
"metrics": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"description": "Metric keys: tothrd, rnhrd, weekend_tothrd, weekend_rnhrd, totalnursingstaffturnover, registerednurseturnover, weighted_all_cycles_score, overall_rating, survey_rating, staffing_rating, quality_rating, bedcert, restot, fine_tot, fine_cnt, occupancy (and documented synonyms)."
},
"filedate": {
"type": "string",
"description": "Optional CMS monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest file. Call list_file_dates first for available dates."
},
"group_by": {
"enum": [
"ownership",
"ownership_kind",
"state",
"overall_rating",
"staffing_rating",
"survey_rating",
"quality_rating",
"sffstatus",
"abuse_icon",
"icon_hi_perf"
],
"type": "string",
"description": "Omit for one national (or filter-scoped) row per metric. ownership_kind is Government | For profit | Non profit."
},
"ownership": {
"type": "string",
"description": "CMS ownership type. Prefixes For profit, Non profit, and Government match that kind. Applied before aggregation."
},
"sffstatus": {
"type": "string"
},
"abuse_icon": {
"type": "string"
},
"icon_hi_perf": {
"type": "string",
"description": "CMS high-performing icon. Y keeps homes currently eligible for a Risk-Based Survey."
},
"include_median": {
"type": "boolean",
"description": "When true, each stats object also includes median. Default false."
},
"max_overall_rating": {
"type": "integer"
},
"min_overall_rating": {
"type": "integer"
}
}
}