MCP server

Read-only tools, prompt templates and resources over one endpoint, so an AI tool can look rates up itself.

MCP (Model Context Protocol) is the open standard that AI tools use to call live data sources themselves. Point Claude or Cursor at this server and the model looks rates up during the conversation instead of relying on what you paste in. Every tool is read-only: an AI tool can query our data but can never change anything here. The tool table below is read from the server, so it lists every live tool, including those added by feature modules.

Tools
ToolWhat it does
search_codesBrowse the code table: hospital and rate counts per code, with low, median and high rates for keys on Market Analytics.
get_codeHospital rows for one code, each with its market percentile and price band (very low to very high), plus the national benchmark. Returned 50 rows at a time, most expensive first.
search_ratesProvider-group rows for one code from the payers' own price files: payer, billing class and the group's NPIs, with the rate and TIN for keys on Market Analytics.
get_provider_profileOne NPI's profile, the same sections for every provider: NPPES registration, CMS enrollment, the payers' price files in and out of network, Medicare Part B volume and the sources checked.
search_providersFind providers by name or NPI in NPPES.
get_fee_scheduleOne provider group's book from the payers' price files, by NPI, page by page, or pivoted code by payer.
batch_ratesMany codes at many hospitals in one matrix, with a row for every pairing, including those not on file. A name given twice counts once, and anything past the limits is listed under dropped.
compare_ratesThe market percentile spread for a code, or one hospital's position within it. Where the hospital prices the code as a percent of charges, it also carries the pctOfCharge inputs and their note (explained on the API page): these are filed inputs, and their product is an estimate, not a rate.
search_hospitalsThe facility directory, filterable by state, name and kind.
get_hospitalOne facility: profile, payer coverage, value score and contract detail. Slugs come from search_hospitals and end with the facility's CMS certification number (CCN); contract groups are returned 50 at a time.
list_payersThe payer directory with coverage counts.
get_mrf_healthHealth rows from our tracker of hospital machine-readable files (MRFs): status, when we last checked, schema and freshness for each file. Filter by hospital name or by a facility slug, which is converted back to the name. Public metadata only, with no dollar figures.
get_usageThe key's access level, its per-minute limit and the requests it has left this minute.
draft_reportA cited research report (market, payer comparison, negotiation brief, diligence, Medicare relativity, competitor study, statewide transparency) drafted from live lookups with the key's access. Counts against the key's daily assistant allowance.
Prompts

Ready-made templates that a client lists in its slash menu (prompts/list, prompts/get). Each one names the tools that answer it, and arguments are inserted as plain text.

PromptArgumentsWhat it drafts
market_reportstate, city, lineA market report for one specialty in one place.
payer_comparisoncodes, stateHow the payers compare on a set of codes.
negotiation_briefprovider, codes, stateA negotiation brief for one provider or group.
hospital_comparisonhospitals, codesTwo to four hospitals side by side with a rate matrix.
medicare_relativitycodes, stateCommercial-to-Medicare ratio for a list of codes.
Resources

Two documents an agent can read before it asks (resources/list, resources/read).

Set up your client
claude mcp add --transport http soro-data https://data.soro.health/mcp \
  --header "Authorization: Bearer sk_live_..."

Custom connectors on claude.ai in the browser take only a URL, and this server does not support OAuth yet, so add it there with your connector link from the top of this page, which carries the key in its address. Every client above takes the plain server URL: four of them send the key as a header, and Codex reads it from an environment variable you name, so the key never lands in the config file.

Things to ask

“What does DRG 470 go for across New Jersey hospitals, and which end of the market is Morristown Medical Center on?”

“Run CPT 30520 and DRG 470 against St Joseph's Syracuse and St Peter's Albany and tell me which pairings are actually on file.”

“Pull Chilton Medical Center's profile: which payers does it contract with, and how do its rates sit against the state average?”

“Find the CPT 99213 market median and name the hospitals pricing it above the 85th percentile.”

Give the code system with the number (CPT 99213, DRG 470), since the same digits can exist in more than one system. Name hospitals the way you know them; batch matching reports anything ambiguous instead of guessing.

Keys and the REST API

Create your sk_live_ keys on the API page, which also has the endpoint reference for calling the same data over plain HTTP.