NCCI Claims Validation — CPT Code Pair Edits + MUE Limits

Created By
easysolutions9063 months ago
Validate CPT/HCPCS code pairs against NCCI edits. Check if codes can be billed together, what modifiers are needed, and MUE unit limits. Prevents claim denials. No public API like this exists.
Overview

MCP NCCI Claims Validation

A Model Context Protocol (MCP) server for validating CPT/HCPCS code pairs against CMS NCCI (National Correct Coding Initiative) edits. Checks Procedure-to-Procedure (PTP) bundling edits and Medically Unlikely Edits (MUE) to prevent claim denials.

Why this exists

Every medical billing company needs NCCI edit validation. Billing wrong code pairs together results in automatic claim denials, lost revenue, and compliance risk. CMS publishes NCCI edits quarterly, but the raw data is difficult to work with. This server provides instant, programmatic validation with clear guidance on modifier usage.

Tools (5 total)

ToolDescription
ncci_validate_pairCheck if two CPT/HCPCS codes can be billed together. Returns edit status, modifier requirements, and rationale.
ncci_validate_claimValidate a full claim — checks all code pair combinations for PTP edits and MUE violations.
ncci_editsGet all NCCI PTP edits for a specific code — every code it bundles with and modifier indicators.
ncci_mueGet the MUE limit for a code — maximum units per line/day/encounter.
ncci_searchSearch edits by code, procedure name, or category.

Data

  • PTP edits covering common CPT/HCPCS code pairs across 20+ specialties
  • MUE entries with practitioner and facility limits
  • Categories: allergy, cardiology, dermatology, E&M, GI, GYN, imaging, infusion, lab, OB, ophthalmology, ortho, pain management, PT, pulmonary, psychiatry, sleep, surgery, urology, wound repair
  • Data updates available via npm run build-data

Install

npx @easysolutions906/ncci-api

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "ncci": {
      "command": "npx",
      "args": ["-y", "@easysolutions906/ncci-api"]
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "ncci": {
      "command": "npx",
      "args": ["-y", "@easysolutions906/ncci-api"]
    }
  }
}

REST API

Set PORT env var to run as an HTTP server:

PORT=3000 ADMIN_SECRET=your_secret node src/index.js
MethodEndpointDescription
POST/validateValidate a code pair
POST/validate/claimValidate a full claim
POST/validate/batchBatch validate multiple claims
GET/edits?code=99213Get all edits for a code
GET/mue?code=99213Get MUE limit for a code
GET/search?q=arthroscopySearch edits by keyword
GET/statsEdit counts by category
GET/data-infoData freshness and record counts
POST/checkoutCreate Stripe checkout session

Examples

Validate a code pair:

curl -X POST https://your-server.com/validate \
  -H 'Content-Type: application/json' \
  -d '{"code1": "99213", "code2": "36415"}'
{
  "code1": "99213",
  "code2": "36415",
  "canBillTogether": false,
  "hasEdit": true,
  "comprehensiveCode": "36415",
  "componentCode": "99213",
  "modifierIndicator": 1,
  "modifierIndicatorDescription": "Modifier allowed — use modifier 25, 59, XE, XS, XP, or XU to unbundle",
  "message": "NCCI edit: 36415 bundles 99213. Apply modifier 25/59/XE/XS/XP/XU to 99213 if services are distinct."
}

Validate a full claim:

curl -X POST https://your-server.com/validate/claim \
  -H 'Content-Type: application/json' \
  -d '{"codes": ["99213", "36415", "80053"], "modifiers": {"99213": "25"}}'

Get MUE limit:

curl https://your-server.com/mue?code=97110
{
  "code": "97110",
  "found": true,
  "description": "Therapeutic exercises, 15 min",
  "practitionerMue": 4,
  "rationale": "Up to 4 units (60 min) therapeutic exercise per day",
  "adjudicationIndicator": 2,
  "adjudicationDescription": "Per Day Edit — applies per beneficiary per day"
}

Pricing

PlanValidations/dayBatchRatePrice
Free2055/min$0
Starter5002530/min$29.99/mo
Pro5,00050100/min$99.99/mo
Business50,000100500/min$299.99/mo

NCCI Edit Types

PTP (Procedure-to-Procedure) Edits

Code pairs that cannot be billed together unless a modifier is applied. Each edit has a modifier indicator:

  • 0 = Not allowed — no modifier will unbundle
  • 1 = Modifier allowed — use 25, 59, XE, XS, XP, or XU
  • 9 = Not applicable

MUE (Medically Unlikely Edits)

Maximum units for a code per line/day/encounter. Adjudication indicators:

  • 1 = Claim Line Edit
  • 2 = Per Day Edit
  • 3 = Per Encounter Edit

Audit Trail

Every response includes dataVersion (CMS quarter), buildDate, and validatedAt (ISO timestamp) for compliance documentation.

Transport

  • stdio (default) — for local use with Claude Desktop and Cursor
  • HTTP — set PORT env var for Streamable HTTP mode on /mcp

Disclaimer

This tool is provided for informational and screening purposes only. It does not constitute medical or billing advice. Always verify against the current CMS NCCI edit files. Compliance decisions remain the responsibility of the user.

Server Config

{
  "mcpServers": {
    "ncci": {
      "command": "npx",
      "args": [
        "-y",
        "@easysolutions906/ncci-api"
      ]
    }
  }
}
Project Info
Created At
3 months ago
Updated At
3 months ago
Author Name
easysolutions906
Star
-
Language
-
License
-
Category

Recommend Servers

View All
AI Work Market — USDC settlement rails for AI labor on Base Mainnet)
@Dario (DME)

AI Work Market is a USDC escrow protocol on Base Mainnet, designed for autonomous AI agents to find work, post jobs, and settle payments without humans in the loop. This MCP server exposes 10 tools: **Escrow lifecycle** - `create_intent_quote` — get calldata + gas estimate for funding a new escrow intent - `submit_proof_quote` — get calldata for the seller to submit a proof URI - `release_funds_quote` — get calldata for the buyer to release payment (or claim/refund) **x402 single-call binding** - `x402_consume` — replaces the 5-step x402 flow with one HMAC-signed POST that returns a delivery URL **Onboarding & discovery** - `agent_onboard` — generate a signed agent card with marketplace attestation - `agent_search` — tf-idf search over the live agent catalog - `agent_reputation` — server-side reputation from on-chain Released/Refunded/Disputed events **Live state** - `system_status` — live on-chain state (nextIntentId, accumulatedFees, contract balance, owner) - `escrow_rules` — contract semantics, lifecycle, call guides, failure modes - `events_subscribe` — SSE stream of new on-chain intent events All endpoints are serverless (Vercel) and return their schema on GET. No browser, no wallet UI required for an agent to integrate. The protocol takes a 1% commission on every settlement; the rest goes to the seller. The full AgentCard is at `/.well-known/agent-card.json` (A2A-compatible). The OpenAPI 3.0.3 spec is at `/.well-known/openapi.json` with `components.securitySchemes` (none, hmacX402). `robots.txt` allows GPTBot, ClaudeBot, anthropic-ai, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, Amazonbot.

8 hours ago