Medicare Advantage, Part D, Medicaid
get_network_system_change
Get Network System Change·v0.2.0·L2·read-only·MCP + REST·admitted 2026-11-05
Inputs
50 required
Sources
2
Known limits
3
Real answer
1.74scomplete
What it answers
- 1Which health systems (or specialties) Medicare Advantage networks gained and lost between 2026 and 2027, from the plans' own published directories: for a contract, every health system with the clinicians listed in each year, how many stayed, left and joined, and an exit or join signal where a system's listing collapsed while the rest of the network held; or search one health system by name across every contract.
- 2Use cases: 'Did Humana drop Ohio State for 2027?'; 'Which systems left H5216's network?'; 'Which contracts lost cardiologists for 2027?'.
- 3Like for like: only each contract's own-year lists (no stand-ins), only ZIP3 areas it lists in both years, members only.
- 4A signal is a DIRECTORY SIGNAL to verify with the system or plan, never proof a contract ended; a contract whose source changed between years carries no signal.
- 5The publish is pinned by dataset_id.
- 6SOURCE: medicare_silver.ma_network_change_v1 (the Data Tracker's directory table x CMS Doctors and Clinicians facility affiliation x the hospital system map).
Inputs (5)
| Name | Type | Required | Default | Accepts |
|---|---|---|---|---|
contract_id | any | optional | null | CMS contract id (H5216). One of contract_id / system. |
limit | any | optional | null | Rows to return (default 50, max 500). |
rollup | string | optional | "system" | 'system' (default; health systems) or 'specialty' (CMS network-adequacy types). system | specialty |
signals_only | boolean | optional | false | Return only system rows flagged as an exit or join signal. |
system | any | optional | null | Health system name (contains match, e.g. 'Ohio State'); searches every contract. |
Call it
# MCP (https://mcp.vladahealth.com/mcp): the tool by name get_network_system_change(system="Ohio State", signals_only=true)
curl -X POST https://api.vladahealth.com/v1/tools/get_network_system_change \
-H "Authorization: Bearer $VLADA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"system":"Ohio State","signals_only":true}'
# the schema, no key
curl https://api.vladahealth.com/v1/tools/get_network_system_change/schemaA real answer
customer seat, 2026-11-09·over REST·1.74s·status
complete·complete·verbatim{
"value": {
"found": false,
"not_found_reason": "no_row_matches_filters",
"query": {
"system": "Ohio State",
"rollup": "system",
"signals_only": true,
"limit": 50
},
"dataset_id": "7bceef45cc9e5910e64caa428a1f3e40869f91d149c4e19f08cc55f5e468ba7c",
"rows": [],
"query_ids": [
"ea97bac2-35ac-4b91-b429-8702a0116670"
]
},
"unit": "network_system_change",
"vintage": null,
"source": {
"dataset": "MA plan networks, 2026 and 2027 (Data Tracker): plan year x CMS plan x NPI x listed location",
"publisher": "vlada",
"catalog_updated_at": "2026-11-02"
},
"caveats": [],
"response_hash": "b0a9e1372c71a7a58b43c717b8ca93424efc0f83f0199cc2e4bb52a380e3e533",
"semantic_version": 1,
"tool_version": "get_network_system_change@0.2.0",
"explanation": null,
"status": "complete",
"audience": "customer",
"answer": {
"value_ref": "value",
"unit": "network_system_change",
"scope": {
"tool": "get_network_system_change",
"filters": {
"system": "Ohio State",
"rollup": "system",
"signals_only": true
}
}
},
"method": "Computed over the filters shown in this answer's scope, from the sources listed in its evidence. Nothing outside those filters was included. You did not specify rollup; system was used.",
"evidence": {
"sources": [
{
"dataset": "MA plan networks, 2026 and 2027 (Data Tracker): plan year x CMS plan x NPI x listed location",
"publisher": "vlada",
"catalog_updated_at": "2026-11-02"
}
],
"response_hash": "b0a9e1372c71a7a58b43c717b8ca93424efc0f83f0199cc2e4bb52a380e3e533"
},
"defaults_applied": [
{
"param": "rollup",
"used": "system",
"reason": "'system' (default"
}
],
"freshness": {
"state": "unknown",
"why": "This tool does not report an edition for its answer, and the door could not derive one from what the answer reads. Treat the result as current to no stated date."
}
}What comes back
| Field | Holds |
|---|---|
status | complete · partial · refused · failed · queued |
value | the shape below |
source · caveats · invariants_applied · response_hash | the public file and vintage; what to know before citing; the rules honoured; replayable |
refusal | code (15), message, recover_with |
{
"$defs": {
"Quality": {
"description": "Row-level quality signal. All flags precomputed at build time\n(stored on the gold mart) and passed through here.",
"properties": {
"is_outlier": {
"default": false,
"title": "Is Outlier",
"type": "boolean"
},
"is_ghost_candidate": {
"default": false,
"title": "Is Ghost Candidate",
"type": "boolean"
},
"n_similar_rates": {
"default": 0,
"title": "N Similar Rates",
"type": "integer"
},
"confidence": {
"default": 1,
"title": "Confidence",
"type": "number"
}
},
"title": "Quality",
"type": "object"
},
"Source": {
"description": "Cell-level provenance. Every served value traces back here.\n\n`snapshot_id` is the Iceberg snapshot the tool read from. Two calls\nat the same snapshot MUST produce byte-identical responses —\nthat's the content-addressed caching guarantee.",
"properties": {
"table": {
"title": "Table",
"type": "string"
},
"rate_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Rate Id"
},
"source_files": {
"items": {
"type": "string"
},
"title": "Source Files",
"type": "array"
},
"snapshot_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Snapshot Id"
}
},
"required": [
"table"
],
"title": "Source",
"type": "object"
}
},
"properties": {
"value": {
"default": null,
"title": "Value"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Unit"
},
"vintage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Vintage"
},
"source": {
"$ref": "#/$defs/Source"
},
"methodology": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Methodology"
},
"quality": {
"$ref": "#/$defs/Quality"
},
"invariants_applied": {
"items": {
"type": "string"
},
"title": "Invariants Applied",
"type": "array"
},
"caveats": {
"items": {
"type": "string"
},
"title": "Caveats",
"type": "array"
},
"response_hash": {
"default": "",
"title": "Response Hash",
"type": "string"
},
"semantic_version": {
"default": 1,
"title": "Semantic Version",
"type": "integer"
},
"tool_version": {
"default": "unknown",
"title": "Tool Version",
"type": "string"
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Explanation"
},
"status": {
"default": "complete",
"title": "Status",
"type": "string"
},
"refusal": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Refusal"
},
"failure": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Failure"
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "As Of"
},
"freshness_state": {
"default": "unknown",
"title": "Freshness State",
"type": "string"
}
},
"title": "NetworkSystemChangeResponse",
"type": "object"
}Sources
| Kind | Name |
|---|---|
| source | medicare_silver.ma_network_change_v1 |
| source | medicare_silver.fact_ma_landscape |
| table | medicare_silver.ma_network_change_v1 |
| table | medicare_silver.fact_ma_landscape |
Known limits (3)
- 1Only contracts with an own-year list in both 2026 and 2027 are compared; the 40 contracts whose 2027 list is their 2026 directory standing in have no change rows.
- 2A clinician affiliated with several systems counts in each; system membership is CMS's hospital affiliation (2026-05-29) through the hospital system map.
- 3A publisher that moved from a thin API snapshot to a full one reads as a high joined rate; joined rates above 20% are flagged unverified.
| Admitted with a known defect |
|---|
| 406 contracts compare like for like; contracts whose 2027 list is a stand-in or whose 2026 list came only through the API carry-back have no rows; 91 exit and 76 join signals, of which two are publicly confirmed; a signal is a directory signal to verify, never proof. |
This page as markdown: /docs-md/tools/get_network_system_change.md · every page in one file: /llms-full.txt