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
| Name | Type | Required | Description |
|---|---|---|---|
near | string | yes | A 5-digit US ZIP (“10016”) or “lat,lon” (“40.7459,-73.9780”). |
radius_mi | number | no | Search radius in miles (1-150, default 25). Straight-line, from ZIP centroid to the hospital’s ZIP centroid. |
payer | string | no | Case-insensitive substring of the payer name (e.g. “aetna”, “blue cross”). Returns that payer’s negotiated rows. |
plan | string | no | Case-insensitive substring of the plan name (e.g. “ppo”, “medicare advantage”). |
setting | string | no | Restrict to inpatient or outpatient pricing. Default: both. |
limit | number | no | Hospitals to return (1-50, default 20), nearest first. |
rates_per_hospital | number | no | With 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
| Field | Type | Description |
|---|---|---|
found | boolean | Whether at least one priced result was found |
reason | string | Machine-readable reason when found is false |
message | string | Plain-language explanation of the reason |
hint | string | How to narrow or fix the request |
data_as_of | string | null | File last-updated date, or the store cycle |
source | string | Publisher and dataset |
licence_note | string | Reuse-licence caveat |
coverage | object | Which states and how many hospitals the store holds |
total | number | Hospitals priced for the query |
returned | number | Hospitals in this response |
truncated | boolean | More hospitals than returned |
narrowing_hint | string | How to narrow |
hospitals | array | Hospitals with their prices or absence reasons |
hospitals_searched | object | Counts of hospitals in range, with prices, priced |
not_priced | object | Hospitals without a price and why |
searched | object | The 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.