Koskamo

KeepMD MCP for EOB Decoder

An MCP server that allows AI assistants to decode Explanation of Benefits (EOB) and medical bills by looking up ICD-10-CM, HCPCS II, and CPT codes, explaining insurance terms, and verifying billing math. It operates in a read-only, privacy-first manner without storing user data or requiring accounts.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

KeepMD MCP for EOB Decoder logo, by KeepMDVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by KeepMD
MCP endpoint (Streamable HTTP)
https://mcp.keepmd.org/eob
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 3 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to keepmd.org ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Decode medical billing codes like Z00.00 or CO-45
  • Explain insurance terms such as deductible and coinsurance
  • Check EOB math to identify balance billing errors
  • Get guidance on disputing denied claims

Source and maintenance

Vendor evidenceRegistry 0.1.3
Maintenance checked

Protocol and capabilities

Server
keepmd-mcp-eob-decoder 0.1.3
MCP protocol negotiated in check
2025-11-25
Tools
5 advertised
Resources
2 advertised
Resource templates
0 advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Read-only reference for Explanation of Benefits (EOB) and medical bills: ICD-10-CM and HCPCS Level II descriptors, an insurance glossary, arithmetic checks and a reading guide. The code tables come from the current official ICD-10-CM and HCPCS Level II releases. Inputs are codes, search words, insurance terms and dollar amounts; the server has no storage and does not need names, dates or identifiers.

Tools

5 advertised

lookup_codes — Look up EOB codes
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

lookup_codes input schema
{
  "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."
    }
  }
}
lookup_codes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_codes — Search diagnosis and service codes
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_codes input schema
{
  "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"
    }
  }
}
search_codes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
explain_insurance_term — Explain an insurance term
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

explain_insurance_term input schema
{
  "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\"."
    }
  }
}
explain_insurance_term annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_eob_math — Check EOB arithmetic
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

check_eob_math input schema
{
  "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."
    }
  }
}
check_eob_math annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_eob_reading_guide — EOB reading guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_eob_reading_guide input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "topic": {
      "enum": [
        "overview",
        "dispute",
        "appeal",
        "glossary"
      ],
      "type": "string",
      "default": "overview"
    }
  }
}
get_eob_reading_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

1 advertised

decode_eob — Decode my EOB

Advertised by the server during the last successful anonymous check.

Walks through an Explanation of Benefits the user pastes into the chat: codes, terms, arithmetic, then next steps.

No arguments advertised.

Resources

2 advertised

glossary-index — Glossary index

Advertised by the server during the last successful anonymous check.

Every term explain_insurance_term can define.

glossary-index URI
keepmd://mcp-eob-decoder/glossary

MIME type: application/json

data-manifest — Code-set versions

Advertised by the server during the last successful anonymous check.

Which ICD-10-CM and HCPCS releases this server is serving.

data-manifest URI
keepmd://mcp-eob-decoder/manifest

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
415 ms
95th percentile latency
415 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 415 ms · metadata changed · 5 tool(s), 2 resource(s), 0 resource template(s), 1 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http keepmd-mcp-for-eob-decoder https://mcp.keepmd.org/eob

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add keepmd-mcp-for-eob-decoder --url https://mcp.keepmd.org/eob

Cursor

Merge this server into .cursor/mcp.json in your project, then enable keepmd-mcp-for-eob-decoder in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "keepmd-mcp-for-eob-decoder": {
      "url": "https://mcp.keepmd.org/eob"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "keepmd-mcp-for-eob-decoder": {
      "type": "streamableHttp",
      "url": "https://mcp.keepmd.org/eob",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start keepmd-mcp-for-eob-decoder and inspect its tools.
VS Code configuration
{
  "servers": {
    "keepmd-mcp-for-eob-decoder": {
      "type": "http",
      "url": "https://mcp.keepmd.org/eob"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http keepmd-mcp-for-eob-decoder https://mcp.keepmd.org/eob

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.keepmd.org/eob

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "keepmd-mcp-for-eob-decoder": {
      "serverUrl": "https://mcp.keepmd.org/eob"
    }
  }
}

Let your agent find its tools

Find servers like KeepMD MCP for EOB Decoder from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run KeepMD MCP for EOB Decoder?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing