
Explains codes, insurance terms and math on a medical Explanation of Benefits or bill. Read-only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Recomputes one EOB line or claim total from the printed amounts (billed, allowed, plan paid, deductible, copay, coinsurance, non-covered, patient responsibility) and reports the contractual adjustment, the expected patient responsibility and plan payment, and any discrepancy such as a balance bill or a mismatched total. Use it when a user gives EOB or bill amounts and asks whether what they owe is right; it returns an itemized, exact calculation with stated assumptions. Pure arithmetic; takes dollar amounts only, never names or identifiers.
Copay amount.
Provider's billed charge for the line or claim.
Plan's allowed, approved or eligible amount.
Amount the plan paid.
Amount applied to the deductible.
false for an out-of-network claim. Defaults to true.
Non-covered amount the statement assigns to the patient (PR group), if any.
Coinsurance percentage, for example 20 or 0.2, if the dollar amount is not printed.
Coinsurance in dollars, if printed.
Total the statement says the patient owes.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http eob-decoder https://mcp.keepmd.org/eob
Recomputes one EOB line or claim total from the printed amounts (billed, allowed, plan paid, deductible, copay, coinsurance, non-covered, patient responsibility) and reports the contractual adjustment, the expected patient responsibility and plan payment, and any discrepancy such as a balance bill or a mismatched total. Use it when a user gives EOB or bill amounts and asks whether what they owe is right; it returns an itemized, exact calculation with stated assumptions. Pure arithmetic; takes dollar amounts only, never names or identifiers.
| Argument | Type | Description |
|---|---|---|
| copay | number | Copay amount. |
| billed | number | Provider's billed charge for the line or claim. |
| allowed | number | Plan's allowed, approved or eligible amount. |
| plan_paid | number | Amount the plan paid. |
| deductible | number | Amount applied to the deductible. |
| in_network | boolean | false for an out-of-network claim. Defaults to true. |
| non_covered | number | Non-covered amount the statement assigns to the patient (PR group), if any. |
| coinsurance_rate | number | Coinsurance percentage, for example 20 or 0.2, if the dollar amount is not printed. |
| coinsurance_amount | number | Coinsurance in dollars, if printed. |
| patient_responsibility | number | Total the statement says the patient owes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"copay": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Copay amount."
},
"billed": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Provider's billed charge for the line or claim."
},
"allowed": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Plan's allowed, approved or eligible amount."
},
"plan_paid": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Amount the plan paid."
},
"deductible": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Amount applied to the deductible."
},
"in_network": {
"type": "boolean",
"description": "false for an out-of-network claim. Defaults to true."
},
"non_covered": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Non-covered amount the statement assigns to the patient (PR group), if any."
},
"coinsurance_rate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Coinsurance percentage, for example 20 or 0.2, if the dollar amount is not printed."
},
"coinsurance_amount": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Coinsurance in dollars, if printed."
},
"patient_responsibility": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Total the statement says the patient owes."
}
}
}Returns KeepMD's plain-language definition, a worked example and related terms for an insurance or medical-billing term from its glossary (allowed amount, deductible, coinsurance, balance billing, CO/PR group codes, No Surprises Act, observation status and about 110 more). Use it when a user asks what a word, column or abbreviation on an EOB, Medicare Summary Notice or bill means, including common ones such as allowed amount, billed amount, deductible or CO. Takes one term per call.
| Argument | Type | Description |
|---|---|---|
| term* | string | An insurance or billing term as it appears on the statement, for example "allowed amount", "coinsurance", "CO", "not a bill". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"term"
],
"properties": {
"term": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "An insurance or billing term as it appears on the statement, for example \"allowed amount\", \"coinsurance\", \"CO\", \"not a bill\"."
}
}
}Returns KeepMD's step-by-step guide, red flags and links to official consumer resources for reading an Explanation of Benefits (overview), resolving a bill that looks wrong (dispute), appealing a denial (appeal), or the handful of terms that drive the arithmetic (glossary). Use it when a user asks how to read an EOB, what to do about a bill that looks wrong, or how to appeal a denial.
| Argument | Type | Description |
|---|---|---|
| topic | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"topic": {
"enum": [
"overview",
"dispute",
"appeal",
"glossary"
],
"type": "string",
"default": "overview"
}
}
}Checks codes against the current official releases, which change every year, and reports whether each is valid, billable or terminated today. Returns the official descriptor for ICD-10-CM diagnosis codes, HCPCS Level II service/supply/drug codes and HCPCS modifiers found on an Explanation of Benefits or medical bill, plus the chapter, a plain-language note where KeepMD has one, the data version, and licensing notices for CPT, dental, NDC and X12 remark codes (which are recognized but not described). Use it for any code a user asks about, including common ones such as Z00.00, 99213, J0696 or CO-45. Accepts every code from a statement in one call.
| Argument | Type | Description |
|---|---|---|
| codes* | array | Codes exactly as printed on the statement, for example ["E11.9", "J0696", "99213", "CO-45", "GT"]. Up to 50 per call; one call per statement. |
| system | string | Which code set to assume. auto tries ICD-10-CM, HCPCS Level II and the licensed patterns. Use carc or rarc for remark/reason codes, modifier for two-character modifiers. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"codes"
],
"properties": {
"codes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20,
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Codes exactly as printed on the statement, for example [\"E11.9\", \"J0696\", \"99213\", \"CO-45\", \"GT\"]. Up to 50 per call; one call per statement."
},
"system": {
"enum": [
"auto",
"icd10cm",
"hcpcs2",
"modifier",
"carc",
"rarc"
],
"type": "string",
"default": "auto",
"description": "Which code set to assume. auto tries ICD-10-CM, HCPCS Level II and the licensed patterns. Use carc or rarc for remark/reason codes, modifier for two-character modifiers."
}
}
}Finds ICD-10-CM diagnosis codes and HCPCS Level II service, supply and drug codes whose official description matches words from a statement (everyday wording such as "flu shot" or "x-ray" is translated to the clinical terms), or whose code starts with the given characters. Use it when the statement prints a description but no code, or the code is partly illegible. CPT (5-digit) physician-service codes such as office visits and lab panels are not searchable because their text is licensed.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | Words from a service or diagnosis description in everyday or clinical wording ("flu shot", "influenza vaccine administration", "type 2 diabetes"), or the start of a code ("E11", "J069"). |
| system | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Words from a service or diagnosis description in everyday or clinical wording (\"flu shot\", \"influenza vaccine administration\", \"type 2 diabetes\"), or the start of a code (\"E11\", \"J069\")."
},
"system": {
"enum": [
"both",
"icd10cm",
"hcpcs2"
],
"type": "string",
"default": "both"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.