@denialbot/mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # @coverageunlocked/denialbot-mcp
2
+
3
+ MCP server that connects AI assistants to CoverageUnlocked's denial intelligence engine. Look up denial codes, generate appeal letters, and analyze denial documents — all from within Claude, ChatGPT, or any MCP-compatible client.
4
+
5
+ ## Quick Start
6
+
7
+ ### Claude Desktop
8
+
9
+ Add to your `claude_desktop_config.json`:
10
+
11
+ ```json
12
+ {
13
+ "mcpServers": {
14
+ "denialbot": {
15
+ "command": "npx",
16
+ "args": ["@coverageunlocked/denialbot-mcp"],
17
+ "env": {
18
+ "DENIALBOT_API_KEY": "cu_your_api_key_here"
19
+ }
20
+ }
21
+ }
22
+ }
23
+ ```
24
+
25
+ ### Get an API Key
26
+
27
+ 1. Visit [coverageunlocked.com/api](https://coverageunlocked.com/api)
28
+ 2. Choose a tier (Sandbox is free for testing)
29
+ 3. Your `cu_` prefixed API key will be emailed to you
30
+
31
+ ## Tools
32
+
33
+ | Tool | Description |
34
+ |------|-------------|
35
+ | `lookup_denial_code` | Detailed info on any denial code — strategy, success rate, regulations |
36
+ | `list_denial_codes` | Browse all 50+ codes, filter by category |
37
+ | `generate_appeal_letter` | 800-1200 word appeal with citations and confidence score |
38
+ | `analyze_denial_letter` | Parse denial text, identify codes, assess urgency |
39
+ | `check_api_status` | Verify API connectivity |
40
+ | `check_usage` | View current usage and quota |
41
+
42
+ ## API Tiers
43
+
44
+ | Tier | Price | Requests/mo | Letters/mo |
45
+ |------|-------|-------------|------------|
46
+ | Sandbox | Free | 100 | 10 |
47
+ | Starter | $99/mo | 1,000 | 100 |
48
+ | Professional | $499/mo | 10,000 | 1,000 |
49
+ | Enterprise | $2,000+/mo | Unlimited | Unlimited |
50
+
51
+ ## Environment Variables
52
+
53
+ | Variable | Required | Default |
54
+ |----------|----------|---------|
55
+ | `DENIALBOT_API_KEY` | Yes | — |
56
+ | `DENIALBOT_API_URL` | No | `https://denialbot-api-prod.coverageunlocked.workers.dev` |
57
+
58
+ ## Built by CoverageUnlocked
59
+
60
+ 20 years of health system expertise, now accessible to AI. [coverageunlocked.com](https://coverageunlocked.com)
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * DenialBot MCP Server
4
+ * Connects AI assistants to CoverageUnlocked's denial intelligence engine
5
+ *
6
+ * Tools:
7
+ * - lookup_denial_code: Get detailed info on a specific denial code
8
+ * - list_denial_codes: Browse all 50+ denial codes
9
+ * - generate_appeal_letter: Create a professional appeal letter
10
+ * - analyze_denial_letter: Parse denial text and identify codes
11
+ * - check_api_status: Health check
12
+ * - check_usage: View current API usage and quota
13
+ */
14
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,214 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * DenialBot MCP Server
5
+ * Connects AI assistants to CoverageUnlocked's denial intelligence engine
6
+ *
7
+ * Tools:
8
+ * - lookup_denial_code: Get detailed info on a specific denial code
9
+ * - list_denial_codes: Browse all 50+ denial codes
10
+ * - generate_appeal_letter: Create a professional appeal letter
11
+ * - analyze_denial_letter: Parse denial text and identify codes
12
+ * - check_api_status: Health check
13
+ * - check_usage: View current API usage and quota
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
17
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
18
+ const zod_1 = require("zod");
19
+ // Configuration
20
+ const API_KEY = process.env.DENIALBOT_API_KEY || "";
21
+ const API_URL = process.env.DENIALBOT_API_URL ||
22
+ "https://denialbot-api-prod.coverageunlocked.workers.dev";
23
+ // Create MCP server
24
+ const server = new mcp_js_1.McpServer({
25
+ name: "denialbot",
26
+ version: "1.0.0",
27
+ });
28
+ // ============================================================================
29
+ // API CLIENT
30
+ // ============================================================================
31
+ async function apiRequest(method, path, body) {
32
+ const headers = {
33
+ "Content-Type": "application/json",
34
+ };
35
+ if (API_KEY) {
36
+ headers["Authorization"] = `Bearer ${API_KEY}`;
37
+ }
38
+ const url = `${API_URL}${path}`;
39
+ const response = await fetch(url, {
40
+ method,
41
+ headers,
42
+ body: body ? JSON.stringify(body) : undefined,
43
+ });
44
+ if (!response.ok) {
45
+ const errorBody = await response.text();
46
+ let errorMessage;
47
+ try {
48
+ const errorJson = JSON.parse(errorBody);
49
+ errorMessage = errorJson.message || errorJson.error || response.statusText;
50
+ }
51
+ catch {
52
+ errorMessage = errorBody || response.statusText;
53
+ }
54
+ if (response.status === 401) {
55
+ throw new Error(`Authentication failed: ${errorMessage}. Set DENIALBOT_API_KEY environment variable with your cu_ prefixed API key. Get one at coverageunlocked.com/api`);
56
+ }
57
+ if (response.status === 429) {
58
+ throw new Error(`Rate limit or quota exceeded: ${errorMessage}. Upgrade your tier at coverageunlocked.com/api#pricing`);
59
+ }
60
+ throw new Error(`API error (${response.status}): ${errorMessage}`);
61
+ }
62
+ return response.json();
63
+ }
64
+ function formatResponse(data) {
65
+ return JSON.stringify(data, null, 2);
66
+ }
67
+ // ============================================================================
68
+ // MCP TOOLS
69
+ // ============================================================================
70
+ // Tool 1: Lookup denial code
71
+ server.tool("lookup_denial_code", "Look up detailed information about an insurance denial code including description, category, appeal strategy, success rate, recommended actions, and supporting regulations. Use when a user mentions a specific denial code or asks about a denial reason.", {
72
+ code: zod_1.z
73
+ .string()
74
+ .describe("The denial code to look up (e.g., 'CO-18', 'PR-1', 'OA-23', 'MA-04'). Supports all standard CARC/RARC denial code formats."),
75
+ }, async ({ code }) => {
76
+ const result = await apiRequest("POST", "/v1/denial-code/lookup", {
77
+ code,
78
+ });
79
+ return {
80
+ content: [
81
+ {
82
+ type: "text",
83
+ text: formatResponse(result),
84
+ },
85
+ ],
86
+ };
87
+ });
88
+ // Tool 2: List denial codes
89
+ server.tool("list_denial_codes", "List all 50+ insurance denial codes in the database. Returns code, description, and category for each. Optionally filter by category. Use when a user wants to browse codes, find the right code for their situation, or asks 'what are the common denial codes'.", {
90
+ category: zod_1.z
91
+ .string()
92
+ .optional()
93
+ .describe("Optional filter by category: 'Coverage', 'Medical Necessity', 'Procedure Related', 'Cost-Sharing', 'Administrative', 'Patient Issues', 'Other Adjudication', 'Frequency Limits'. Omit to list all codes."),
94
+ }, async ({ category }) => {
95
+ let path = "/v1/denial-codes";
96
+ if (category) {
97
+ path += `?category=${encodeURIComponent(category)}`;
98
+ }
99
+ const result = await apiRequest("GET", path);
100
+ // If category filter was applied and result is an array, filter client-side too
101
+ let filtered = result;
102
+ if (category && Array.isArray(result)) {
103
+ filtered = result.filter((code) => code.category?.toLowerCase() === category.toLowerCase());
104
+ }
105
+ return {
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: formatResponse(filtered),
110
+ },
111
+ ],
112
+ };
113
+ });
114
+ // Tool 3: Generate appeal letter
115
+ server.tool("generate_appeal_letter", "Generate a professional 800-1200 word insurance appeal letter with regulatory citations (ACA, ERISA), clinical evidence references, confidence score, and estimated success rate. Use when a user wants help writing an appeal, has been denied coverage, or needs a template appeal letter.", {
116
+ denial_code: zod_1.z
117
+ .string()
118
+ .describe("The denial code from the insurance company (e.g., 'CO-18')"),
119
+ diagnosis: zod_1.z
120
+ .string()
121
+ .describe("The patient's medical diagnosis (e.g., 'Type 2 Diabetes Mellitus with peripheral neuropathy')"),
122
+ procedure: zod_1.z
123
+ .string()
124
+ .describe("The denied medical procedure or service (e.g., 'Advanced continuous glucose monitoring system')"),
125
+ insurance_company: zod_1.z
126
+ .string()
127
+ .optional()
128
+ .describe("The insurance company name (e.g., 'Blue Cross Blue Shield of Illinois')"),
129
+ patient_summary: zod_1.z
130
+ .string()
131
+ .optional()
132
+ .describe("Brief clinical summary of the patient's situation, relevant history, and why the procedure is needed"),
133
+ denial_reason: zod_1.z
134
+ .string()
135
+ .optional()
136
+ .describe("The stated reason for denial from the insurance company's explanation of benefits (EOB)"),
137
+ }, async (params) => {
138
+ const result = await apiRequest("POST", "/v1/appeal/generate", params);
139
+ return {
140
+ content: [
141
+ {
142
+ type: "text",
143
+ text: formatResponse(result),
144
+ },
145
+ ],
146
+ };
147
+ });
148
+ // Tool 4: Analyze denial letter
149
+ server.tool("analyze_denial_letter", "Analyze raw denial letter text to identify denial codes, classify the denial type, assess urgency, and recommend next steps. Use when a user has received a denial letter and wants to understand it, or needs help identifying what codes apply.", {
150
+ denial_text: zod_1.z
151
+ .string()
152
+ .describe("The full text of the insurance denial letter or Explanation of Benefits (EOB). Can be pasted directly from the document."),
153
+ }, async ({ denial_text }) => {
154
+ const result = await apiRequest("POST", "/v1/appeal/analyze", {
155
+ denial_text,
156
+ });
157
+ return {
158
+ content: [
159
+ {
160
+ type: "text",
161
+ text: formatResponse(result),
162
+ },
163
+ ],
164
+ };
165
+ });
166
+ // Tool 5: Check API status
167
+ server.tool("check_api_status", "Check the operational status of the DenialBot API. Use to verify connectivity before making other calls.", {}, async () => {
168
+ const result = await apiRequest("GET", "/v1/status");
169
+ return {
170
+ content: [
171
+ {
172
+ type: "text",
173
+ text: formatResponse(result),
174
+ },
175
+ ],
176
+ };
177
+ });
178
+ // Tool 6: Check usage
179
+ server.tool("check_usage", "Check current API usage, quota remaining, and tier information for the authenticated API key.", {}, async () => {
180
+ if (!API_KEY) {
181
+ return {
182
+ content: [
183
+ {
184
+ type: "text",
185
+ text: "No API key configured. Set DENIALBOT_API_KEY to check usage.",
186
+ },
187
+ ],
188
+ };
189
+ }
190
+ const result = await apiRequest("GET", "/v1/usage");
191
+ return {
192
+ content: [
193
+ {
194
+ type: "text",
195
+ text: formatResponse(result),
196
+ },
197
+ ],
198
+ };
199
+ });
200
+ // ============================================================================
201
+ // SERVER STARTUP
202
+ // ============================================================================
203
+ async function main() {
204
+ const transport = new stdio_js_1.StdioServerTransport();
205
+ await server.connect(transport);
206
+ console.error("DenialBot MCP server running on stdio");
207
+ console.error(`API URL: ${API_URL}`);
208
+ console.error(`API Key: ${API_KEY ? API_KEY.substring(0, 8) + "..." : "NOT SET"}`);
209
+ }
210
+ main().catch((error) => {
211
+ console.error("Failed to start DenialBot MCP server:", error);
212
+ process.exit(1);
213
+ });
214
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@denialbot/mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for CoverageUnlocked DenialBot API — Insurance denial code intelligence, appeal letter generation, and denial analysis for Claude and other AI assistants",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "denialbot-mcp": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "start": "node dist/index.js",
12
+ "dev": "tsx src/index.ts",
13
+ "prepublishOnly": "npm run build"
14
+ },
15
+ "dependencies": {
16
+ "@modelcontextprotocol/sdk": "^1.0.0",
17
+ "zod": "^3.22.0"
18
+ },
19
+ "devDependencies": {
20
+ "typescript": "^5.3.0",
21
+ "tsx": "^4.7.0",
22
+ "@types/node": "^20.0.0"
23
+ },
24
+ "keywords": [
25
+ "mcp",
26
+ "model-context-protocol",
27
+ "insurance",
28
+ "denial",
29
+ "appeal",
30
+ "healthcare",
31
+ "coverageunlocked",
32
+ "denialbot",
33
+ "claude",
34
+ "ai-tools",
35
+ "health-insurance",
36
+ "appeal-letter"
37
+ ],
38
+ "author": "CoverageUnlocked <api@coverageunlocked.com>",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/edgeedgehq/denialbot-mcp"
43
+ },
44
+ "homepage": "https://coverageunlocked.com/api",
45
+ "engines": {
46
+ "node": ">=18.0.0"
47
+ },
48
+ "files": [
49
+ "dist",
50
+ "README.md"
51
+ ]
52
+ }