hospital_price_search

Pack: hospital-prices · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)

No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/hospital_price_search for the schema, then POST the same URL with its arguments for the data.

Hospital prices for a CPT/HCPCS or MS-DRG code near a ZIP: gross, cash, negotiated by payer, with explicit coverage and absence reasons.

Tool description as the model sees it

What hospitals near a US ZIP charge for one service, from the standard charges files each hospital publishes under the CMS price transparency rule. Per hospital: gross charge (list price, not what anyone pays), self-pay discounted cash price, the de-identified min/max negotiated amounts, and a summary of payer-specific negotiated dollar rates; pass payer and/or plan to get that payer’s negotiated rate rows. Each rate carries dollar_available: when a hospital published a percentage or formula instead of a dollar amount it says so and gives the hospital’s own text rather than a number. COVERAGE IS PARTIAL AND STATED (the store is loaded state by state; each response lists the states loaded): every response says how many hospitals in range have prices loaded, why others do not (the hospital’s site blocks us, no file found, …), and distinguishes “no hospital in range”, “hospital held but code absent” and “code present but payer not listed”. Holds only the CMS 70 shoppable CPT/HCPCS services and MS-DRGs. Use for “what does a head CT cost near 02139”, “MS-DRG 470 near 10016 for Aetna”.

Parameters

NameTypeRequiredDescription
nearstringyesA 5-digit US ZIP (“10016”) or “lat,lon” (“40.7459,-73.9780”).
radius_minumbernoSearch radius in miles (1-150, default 25). Straight-line, from ZIP centroid to the hospital’s ZIP centroid.
payerstringnoCase-insensitive substring of the payer name (e.g. “aetna”, “blue cross”). Returns that payer’s negotiated rows.
planstringnoCase-insensitive substring of the plan name (e.g. “ppo”, “medicare advantage”).
settingstringnoRestrict to inpatient or outpatient pricing. Default: both.
limitnumbernoHospitals to return (1-50, default 20), nearest first.
rates_per_hospitalnumbernoWith payer/plan: negotiated rows per hospital (1-25, default 5).

Example call

Arguments

{
  "code": "470",
  "near": "60453",
  "radius_mi": 10,
  "limit": 4
}

curl

curl -X POST https://gateway.pipeworx.io/hospital-prices/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"hospital_price_search","arguments":{"code":"470","near":"60453","radius_mi":10,"limit":4}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('hospital_price_search', {
  "code": "470",
  "near": "60453",
  "radius_mi": 10,
  "limit": 4
});

More examples

{
  "code": "470",
  "near": "60453",
  "radius_mi": 3,
  "payer": "blue cross"
}

Response shape

FieldTypeDescription
foundbooleanWhether at least one priced result was found
reasonstringMachine-readable reason when found is false
messagestringPlain-language explanation of the reason
hintstringHow to narrow or fix the request
data_as_ofstring | nullFile last-updated date, or the store cycle
sourcestringPublisher and dataset
licence_notestringReuse-licence caveat
coverageobjectWhich states and how many hospitals the store holds
totalnumberHospitals priced for the query
returnednumberHospitals in this response
truncatedbooleanMore hospitals than returned
narrowing_hintstringHow to narrow
hospitalsarrayHospitals with their prices or absence reasons
hospitals_searchedobjectCounts of hospitals in range, with prices, priced
not_pricedobjectHospitals without a price and why
searchedobjectThe query as interpreted
Full JSON Schema
{
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "found": {
      "type": "boolean",
      "description": "Whether at least one priced result was found"
    },
    "reason": {
      "type": "string",
      "description": "Machine-readable reason when found is false"
    },
    "message": {
      "type": "string",
      "description": "Plain-language explanation of the reason"
    },
    "hint": {
      "type": "string",
      "description": "How to narrow or fix the request"
    },
    "data_as_of": {
      "type": [
        "string",
        "null"
      ],
      "description": "File last-updated date, or the store cycle"
    },
    "source": {
      "type": "string",
      "description": "Publisher and dataset"
    },
    "licence_note": {
      "type": "string",
      "description": "Reuse-licence caveat"
    },
    "coverage": {
      "type": "object",
      "description": "Which states and how many hospitals the store holds",
      "additionalProperties": true
    },
    "total": {
      "type": "number",
      "description": "Hospitals priced for the query"
    },
    "returned": {
      "type": "number",
      "description": "Hospitals in this response"
    },
    "truncated": {
      "type": "boolean",
      "description": "More hospitals than returned"
    },
    "narrowing_hint": {
      "type": "string",
      "description": "How to narrow"
    },
    "hospitals": {
      "type": "array",
      "description": "Hospitals with their prices or absence reasons",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "ccn": {
            "type": "string",
            "description": "CMS Certification Number"
          },
          "name": {
            "type": "string",
            "description": "Hospital name"
          },
          "data_as_of": {
            "type": [
              "string",
              "null"
            ],
            "description": "The hospital file's last_updated_on"
          },
          "prices": {
            "type": "array",
            "description": "Gross, cash and negotiated summary per setting",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "negotiated_rates": {
            "type": "array",
            "description": "Payer rows; dollar_available false carries methodology text",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "dollar_available": {
                  "type": "boolean",
                  "description": "False when the hospital published a percentage or formula, not a dollar figure"
                },
                "negotiated_dollar": {
                  "type": [
                    "number",
                    "null"
                  ],
                  "description": "Negotiated dollar amount"
                }
              }
            }
          }
        }
      }
    },
    "hospitals_searched": {
      "type": "object",
      "additionalProperties": true,
      "description": "Counts of hospitals in range, with prices, priced"
    },
    "not_priced": {
      "type": "object",
      "additionalProperties": true,
      "description": "Hospitals without a price and why"
    },
    "searched": {
      "type": "object",
      "additionalProperties": true,
      "description": "The query as interpreted"
    }
  }
}

Connect

Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://pipeworx.io/mcp"
    }
  }
}
Connect to just the hospital-prices pack
{
  "mcpServers": {
    "hospital-prices": {
      "url": "https://gateway.pipeworx.io/hospital-prices/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build October 28, 2026