{"id":"cc64e779-6811-47dc-b252-a3c46b2f19a8","slug":"mcp-insurance-denials","kind":"mcp","name":"mcp-insurance-denials","summary":"US health-insurance claim denials and appeal outcomes, by insurer.","owner":"pipeworx-io","repoUrl":"https://github.com/pipeworx-io/mcp-insurance-denials","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-09-14T22:58:02.000Z","addedAt":"2026-10-14T05:54:04.609Z","logoUrl":"https://avatars.githubusercontent.com/u/270792911?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["cloud-infra","memory-knowledge"],"tags":["insurance-denials","pipeworx"],"runtime":"remote","local":false,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-17T18:06:48.737Z","sample":false,"url":"https://conduits.dev/tools/mcp-insurance-denials","language":"TypeScript","transports":["http"],"install":{"remoteUrl":"https://gateway.pipeworx.io/insurance-denials/mcp"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# insurance-denials\n\nUS health-insurance claim denial rates and appeal outcomes, per insurer — which\ncompanies deny the most claims, and whether appealing one actually works.\n\nPart of [Pipeworx](https://pipeworx.io) — an MCP gateway connecting AI agents to 1679+ live data sources.\n\n## Tools\n\n| Tool | Answers |\n|---|---|\n| `insurer_denial_rates` | Which insurers deny the most claims, ranked by in-network denial rate. Filter by state and market. |\n| `insurer_appeal_outcomes` | What share of appeals get overturned in the patient's favour, internal *and* external. |\n| `insurer_denial_profile` | Everything reported for one named insurer, forgiving about how the name is written. |\n| `insurer_denial_coverage` | What is in scope — plan year, issuer and state counts, and how much CMS suppressed. |\n\n## Auth\n\nNone. No key, no account.\n\n## Data sources\n\nThe **CMS Transparency in Coverage Public Use File**, plan year 2026, published\nby the Centers for Medicare & Medicaid Services:\n\n- Landing page: <https://www.cms.gov/marketplace/resources/data/public-use-files>\n- File: <https://download.cms.gov/marketplace-puf/2026/transparency-in-coverage-puf.zip>\n\nIssuers report these figures to CMS themselves under 45 CFR 156.220. CMS\npublishes the file once a year, as an XLSX inside a ZIP.\n\n## What this covers, and what it does not\n\nTwo limits, both easy to mistake for a data bug:\n\n**HealthCare.gov states only — 30 of them.** An issuer on a state-run exchange\n(California, New York, Massachusetts, Washington, Colorado, Pennsylvania, New\nJersey and others) reports to that state, not into this federal file. A caller\nasking about California gets an explicit `state_not_in_source` refusal naming\nthe reason, rather than an empty list that would read as \"California insurers\ndeny nothing\".\n\n**Self-reported.** These are the issuers' own counts, and CMS says so in the\nfile's own disclaimer. They are not an audit.\n\n## Reading the numbers\n\n- **Dental denies far more than medical.** Standalone dental plans\n  (`Individual SADP`) sit at the top of any unfiltered denial ranking — several\n  above 70%. Pass `market: \"medical\"` when the question is about medical cover,\n  or the answer will be true and misleading.\n- **Suppressed is not zero.** CMS marks a figure it cannot publish with `*` or\n  `**`. Those are `null` here, never `0` — a suppressed denial count reported as\n  zero would describe a perfect insurer.\n- **Internal and external appeals differ.** Internal appeals are decided by the\n  insurer that issued the denial; external appeals go to an independent\n  reviewer. The external number is the arm's-length one.\n- **One filing per state.** A multi-state insurer reports separately in each\n  state, so `insurer_denial_profile` returns one entry per state rather than a\n  single national figure.\n- **`markets` is a scope label, not a slice.** CMS publishes these counts per\n  ISSUER, not per market, and an issuer selling both medical and dental files\n  the same totals in both sheets (25 of 348 do). So `markets` lists which\n  marketplaces an issuer participates in, and filtering by market chooses which\n  issuers to include — it does not carve up their claim counts.\n\n## Refreshing\n\nAnnual, when CMS publishes the next plan year:\n\n```bash\nnode scripts/refresh-insurance-denials.mjs   # rewrites src/data.json\n```\n\nThe script re-reads the CMS file and rolls it up to issuer level. It **dedupes\nby issuer id and never sums**: the `Issuer_*` columns repeat identically on\nevery plan row an issuer has, so summing multiplies each figure by that\nissuer's plan count. Verified when the pack was built — 0 of 185 issuer ids\nvaried across their own rows. It also emits **one record per issuer**, merging\nthe market sheets an issuer appears in, for the same reason: those rows carry\nidentical totals, and one row per sheet duplicated 25 issuers in every ranking.\n\n## Quick Start\n\nAdd to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"insurance-denials\": {\n      \"url\": \"https://gateway.pipeworx.io/insurance-denials/mcp\"\n    }\n  }\n}\n```\n\n### What this endpoint actually serves\n\n`tools/list` at `https://gateway.pipeworx.io/insurance-denials/mcp` returns the tools in the table\nabove **plus the shared Pipeworx meta-tools** — `ask_pipeworx`,\n`discover_tools`, `search_within`, `remember`/`recall` and the rest of the\ngateway-wide set. So the tool count you see is larger than this table: a\nsingle-pack endpoint currently lists roughly 30 shared tools alongside the\npack's own. The connection's `initialize` response states its exact scope, and\nis the authoritative answer for a given day.\n\nThis is deliberate, not multiplexing by accident. The meta-tools are what let a\nscoped connection answer a question this pack does not cover — via\n`ask_pipeworx`, which routes across the whole catalog — without you adding a\nsecond MCP server. There is currently no way to mount a pack endpoint without\nthem; if the extra schemas cost you more context than the routing is worth,\nconnect to the full gateway once rather than to several pack endpoints.\n\nOr connect to the full Pipeworx gateway to get every pack's tools listed\ndirectly, instead of just this one's:\n\n```json\n{\n  \"mcpServers\": {\n    \"pipeworx\": {\n      \"url\": \"https://gateway.pipeworx.io/mcp\"\n    }\n  }\n}\n```\n\nBoth URLs reach the same gateway and the same 1679+ data sources. The\nonly difference is which pack's tools are listed **directly**; `ask_pipeworx`\nreaches all of them from either one.\n\n## No MCP client? Call it over HTTP\n\n```bash\ncurl -X POST https://gateway.pipeworx.io/v1/tools/insurer_denial_rates \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"market\":\"medical\",\"limit\":5}'\n```\n\nNo account needed for the first calls. Inspect any tool: `GET https://gateway.pipeworx.io/v1/tools/insurer_denial_rates`. Find one: `POST https://gateway.pipeworx.io/v1/tools/search_packs` with `{\"query\":\"...\"}`.\n\n## Standalone (no gateway account)\n\nThis package also runs as a local stdio MCP server — no Pipeworx account, no\ngateway round-trip:\n\n```json\n{\n  \"mcpServers\": {\n    \"insurance-denials\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@pipeworx/mcp-insurance-denials\"]\n    }\n  }\n}\n```\n\nOr run it directly to confirm it starts:\n\n```bash\nnpx -y @pipeworx/mcp-insurance-denials\n```\n\nIt speaks MCP over stdin/stdout and answers `initialize`/`tools/list`/`tools/call`\nfor **only** this pack's tools — none of the shared meta-tools the gateway\nconnection above adds. Same source, same tools, no ask_pipeworx routing.\n\n## Using with ask_pipeworx\n\nInstead of calling tools directly, you can ask questions in plain English —\nthis works on the pack endpoint above as well as on the full gateway:\n\n```\nask_pipeworx({ question: \"your question about Insurance Denials data\" })\n```\n\nThe gateway picks the right tool and fills the arguments automatically.\n\n## More\n\n- [Docs and guides](https://pipeworx.io/docs)\n- [pipeworx.io](https://pipeworx.io)\n\n## License\n\nMIT\n"}