MedPrice AI
by medprice-ai · remote · no sign-in to list tools · v0.0.1 · published by GitHub user medprice-ai
Hosted MCP server exposing US hospital procedure cost data to AI assistants
7 tools: 3 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http medprice-ai https://mcp.medprice.ai/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "get_hospital_chargemaster_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "get_hospital_chargemaster_cost" says "get": a word for reading.
The server marks "list_hospital_code_costs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "list_hospital_code_costs" says "list": a word for reading.
The server marks "get_code_price_distribution" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "get_code_price_distribution" says "get": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
7 tools
Changes things 3Claude Code: ask
get_code_price_distributionReturns the distribution of every hospital's price for a code_type/code, computed server-side: min/p10/q1/median/q3/p90/max, standard deviation, a histogram, and the real hospital …1 finding
Why it is in this group
- The name "get_code_price_distribution" says "get": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "get_code_price_distribution" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "get_code_price_distribution" says "get": a word for reading.
Description, as the server wrote it Returns the distribution of every hospital's price for a code_type/code, computed server-side: min/p10/q1/median/q3/p90/max, standard deviation, a histogram, and the real hospital nearest each percentile. Use this instead of paging through list_hospital_code_costs when you want to know how prices spread across hospitals (e.g. "is $12k high for MS-DRG 788?" - pass reference_price to get the number of hospitals priced below it). All figures are in terms of the chosen statistic (default: each hospital's average price).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
get_hospital_chargemaster_costLookup hospital chargemaster cost1 finding
Why it is in this group
- The name "get_hospital_chargemaster_cost" says "get": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "get_hospital_chargemaster_cost" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "get_hospital_chargemaster_cost" says "get": a word for reading.
Description, as the server wrote it Lookup hospital chargemaster cost
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_hospital_code_costsReturns cost stats for every hospital with a matching chargemaster entry for a code_type/code.1 finding
Why it is in this group
- The name "list_hospital_code_costs" says "list": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "list_hospital_code_costs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "list_hospital_code_costs" says "list": a word for reading.
Description, as the server wrote it Returns cost stats for every hospital with a matching chargemaster entry for a code_type/code. Use this instead of calling get_hospital_chargemaster_cost once per hospital when comparing prices for the same procedure across hospitals (e.g. "which hospital has the cheapest MS-DRG 652?"). Defaults to returning every matching hospital (currently at most a few hundred) in one call. If the response's next_page_token is non-empty, the result set was truncated: call this tool again passing that exact value as page_token to get the next page, and keep doing so until next_page_token is empty - do not stop after one page and conclude a hospital has no data for this code. The response's total_count field (total across all pages) can be compared against how many results you've accumulated so far as a completeness check.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
Only reads 4Claude Code: allow
batch_get_hospital_chargemaster_costLooks up cost stats for several (code_type, code) pairs at one hospital (identified by hospital_id) in a single call - the batch counterpart to get_hospital_chargemaster_cost.No findings
Why it is in this group
- The name "batch_get_hospital_chargemaster_cost" says "get": a word for reading.
Description, as the server wrote it Looks up cost stats for several (code_type, code) pairs at one hospital (identified by hospital_id) in a single call - the batch counterpart to get_hospital_chargemaster_cost. Use this instead of calling get_hospital_chargemaster_cost once per code when pricing a fixed set of codes at one hospital (e.g. cross-linking a curated list of procedures on a hospital's page). Capped at 100 codes per call; a request over that is rejected with INVALID_ARGUMENT rather than silently truncated.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_code_typesReturns every distinct code_type (e.g.No findings
Why it is in this group
- The name "list_code_types" says "list": a word for reading.
Description, as the server wrote it Returns every distinct code_type (e.g. CPT, MS-DRG) with catalogued cost data, along with each type's distinct code count and total hospital reports. Unpaginated. Use this to discover which code systems have data before drilling into list_codes.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_codesReturns every distinct code catalogued under a given code_type, paginated, with each code's raw chargemaster description and the number of hospitals reporting it.No findings
Why it is in this group
- The name "list_codes" says "list": a word for reading.
Description, as the server wrote it Returns every distinct code catalogued under a given code_type, paginated, with each code's raw chargemaster description and the number of hospitals reporting it. Use this to discover which codes exist under a code system (e.g. all CPT codes) before looking up prices with get_hospital_chargemaster_cost or list_hospital_code_costs. Pass query to text-search codes/descriptions instead of listing a whole code_type. Pass hospital_id to restrict results to codes that one hospital actually reports.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
list_hospitalsReturns the hospitals supported by the medprice.ai API, with their hospital_id (opaque handle), EIN, name, structured_locations (addresses with geocoded coordinates where available…No findings
Why it is in this group
- The name "list_hospitals" says "list": a word for reading.
Description, as the server wrote it Returns the hospitals supported by the medprice.ai API, with their hospital_id (opaque handle), EIN, name, structured_locations (addresses with geocoded coordinates where available), last_updated_on, and revision history (with per-revision has_payer_data, revision_id, and added_at - when medprice itself ingested that revision, as opposed to revision_date's source-file-reported update date). Defaults to returning the entire registry (currently a few hundred hospitals) in one call. If the response's next_page_token is non-empty, the result set was truncated: call this tool again passing that exact value as page_token to get the next page, and keep doing so until next_page_token is empty - do not stop after one page and conclude the list is complete. The response's total_count field (total across all pages) can be compared against how many hospitals you've accumulated so far as a completeness check, e.g. before answering questions like 'does medprice.ai cover any hospitals in Iowa'.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http medprice-ai https://mcp.medprice.ai/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__medprice-ai__batch_get_hospital_chargemaster_cost",
"mcp__medprice-ai__list_hospitals",
"mcp__medprice-ai__list_code_types",
"mcp__medprice-ai__list_codes"
],
"ask": [
"mcp__medprice-ai__get_hospital_chargemaster_cost",
"mcp__medprice-ai__list_hospital_code_costs",
"mcp__medprice-ai__get_code_price_distribution"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as medprice-ai. Review it before you use it.
