painprep-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@painprep-mcp-serverShow me the Medicare checklist for lumbar ESI."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
painprep-mcp-server
An MCP server for interventional pain medicine — Medicare documentation checklists, CPT/ICD-10 coding, ASRA anticoagulation guidance, prior-authorization letters, denial appeals, and research evidence for 85+ procedures.
Built from PainPrep by Keith Schmidt, MD (triple board-certified pain medicine). This server makes PainPrep's clinical reference data available to any MCP client — Claude Desktop, Claude Code, or your own agent.
⚠️ Clinical decision-support, not medical advice. All output must be reviewed by a licensed clinician. Coding, coverage, and anticoagulation guidance change frequently — always verify against current CMS/LCD policy and the latest ASRA guidelines.
What it does
Tool | Tier | Description |
| Free | Full catalog of procedures grouped by category, with ids and headline CPT codes. |
| Free | Primary + add-on CPT codes, work RVUs, facility setting, and billing notes. |
| Premium | Full LCD/Medicare documentation checklist with rationale, suggested wording, denial triggers, and admin checks. |
| Premium | Approved/supportive ICD-10 codes, codes to avoid, and coding tips. |
| Premium | Bleeding-risk tier + per-medication ASRA hold/resume guidance + safety checks. |
| Premium | Generates a payer-ready prior-authorization / medical-necessity letter from patient details + procedure data. |
| Premium | Common denial reasons with frequency, the fix for each, and an appeal letter snippet. |
| Premium | Evidence grade, summary, and key studies with citations. |
| Premium | Audits a note against the required checklist and scores completeness, highlighting commonly-missed gaps. |
Every tool accepts a procedure as a name, id, or CPT code (e.g. "Lumbar/Sacral Interlaminar ESI", "lesi", or "62323"). Unrecognized queries return "did you mean" suggestions.
Related MCP server: PubMed Advanced MCP Server
Quick start (no install)
The fastest way to run the server — npx clones, builds, and launches it in one step:
npx -y github:Goingparabolic/painprep-mcp-serverOr wire it straight into an MCP client (see examples/claude_desktop_config.json):
{
"mcpServers": {
"painprep": {
"command": "npx",
"args": ["-y", "github:Goingparabolic/painprep-mcp-server"],
"env": { "PAINPREP_LICENSE_KEY": "PP-XXXX-XXXX-XXXX" }
}
}
}Install & build (from source)
git clone https://github.com/Goingparabolic/painprep-mcp-server.git
cd painprep-mcp-server
npm install
# Extract the clinical data from the PainPrep source (one-time; see "Data" below)
npm run extract # reads the PainPrep HTML → src/data/*.json
npm run build # compile TypeScript → dist/ and copy data
npm run smoke # end-to-end test (optional)The repository ships with the extracted JSON in
src/data/, sonpm run extractis only needed to regenerate it from an updated PainPrep source.
Use with Claude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"painprep": {
"command": "node",
"args": ["/absolute/path/to/painprep-mcp-server/dist/index.js"],
"env": { "PAINPREP_LICENSE_KEY": "PP-XXXX-XXXX-XXXX" }
}
}
}Restart Claude Desktop. You'll then be able to ask things like:
"List the SI joint procedures."
"What are the CPT codes and RVUs for lumbar RFA?"
"Draft a prior-auth letter for a lumbar ESI for a patient with 5 months of L5 radiculopathy who failed 8 weeks of PT."
"My note for an LESI documents MRI findings and pain score — what's missing for Medicare?"
See examples/claude_desktop_config.json for an npx variant.
Use with Claude Code
claude mcp add painprep -- node /absolute/path/to/painprep-mcp-server/dist/index.jsInspect locally
npm run inspect # opens the MCP Inspector against the stdio serverRemote hosting (HTTP / SSE)
The same tools are served over Streamable HTTP for remote deployment (MCPize, a VPS, or serverless):
npm run build
PORT=3000 node dist/http.js
# → POST http://localhost:3000/mcp (GET /health for a liveness check)The HTTP transport is stateless and multi-tenant: the per-customer license key is read from a request header, so a single deployment can serve many customers.
X-PainPrep-License: PP-XXXX-XXXX-XXXX (preferred)
Authorization: Bearer PP-XXXX-XXXX-XXXX (also accepted)Pricing & availability
Tier | Price | Tools included |
Free | $0 |
|
Premium | $29/month | All 9 tools — Medicare checklists, ICD-10 guidance, ASRA anticoagulation checks, prior-auth letters, denial appeals, research evidence, documentation auditing |
Get Premium
Purchase a Premium license key via Stripe:
After subscribing you'll receive a license key in the format PP-XXXX-XXXX-XXXX. Set it in your MCP client configuration (see setup instructions above).
Where to find PainPrep
PainPrep is available on multiple MCP marketplaces:
MCPize Marketplace — deploy-and-subscribe hosting with 80% revenue share
Apify Store — pay-per-event pricing, distributed across Make, n8n, and partner platforms
Self-hosted — clone this repo and run it yourself (see Remote hosting above)
Monetization & licensing
The server has a built-in free / premium split designed to be wired to a billing provider (Stripe, MCPize) with minimal change.
Free tier:
get_procedure_list,get_cpt_codes.Premium tier: everything else.
Premium tools are still discoverable (they appear in tools/list so clients can advertise the upgrade), but calling one without a valid entitlement returns an upgrade prompt instead of data.
Entitlement resolution
Configured via environment variables (stdio) or request headers (HTTP):
Variable | Purpose |
| The customer's license key. |
| Force |
| Comma-separated allowlist of keys treated as valid premium (manual provisioning / testing). |
| Optional HTTP endpoint for remote key verification. When set, keys are validated against this service instead of locally. |
A locally-issued key matches the format PP-XXXX-XXXX-XXXX. For production, point PAINPREP_LICENSE_VERIFY_URL at your billing webhook; it should accept { "key": "..." } and return { "valid": true, "tier": "premium", "expiresAt": "..." }.
The verification layer lives entirely in src/licensing.ts behind a LicenseProvider interface — swap the implementation without touching any tool.
Project structure
painprep-mcp-server/
├── src/
│ ├── index.ts # stdio entry point (Claude Desktop / Code)
│ ├── http.ts # Streamable HTTP entry point (remote hosting)
│ ├── server.ts # builds the MCP server + tier gating
│ ├── licensing.ts # free/premium entitlement (pluggable)
│ ├── data.ts # data loading + procedure resolver
│ ├── types.ts # clinical data types
│ ├── tools/ # one file per MCP tool
│ └── data/ # extracted clinical data (JSON)
├── scripts/
│ ├── extract-data.mjs # parse PainPrep HTML → src/data/*.json
│ ├── copy-assets.mjs # copy JSON into dist/ at build
│ └── smoke-test.mjs # end-to-end MCP client/server test
├── examples/
│ └── claude_desktop_config.json
├── package.json
├── tsconfig.json
├── LICENSE
└── README.mdData
Clinical data is extracted from the PainPrep application source. The extractor
(scripts/extract-data.mjs) locates the embedded data objects (CATEGORIES,
CHECKLISTS, ANTICOAG, MED_NECESSITY, ICD10_REF, DENIAL_TEMPLATES,
CPT_DETAILS, RESEARCH_EVIDENCE), evaluates each literal in a sandbox, and
writes clean JSON to src/data/. To regenerate from an updated source:
npm run extract -- "/path/to/painprep-mvp.html"License
MIT © 2026 Keith Schmidt, MD
The clinical reference content is provided for educational and decision-support purposes only and does not constitute medical advice.
Available Tools
9 toolscheck_documentation_completenessCheck Documentation CompletenessARead-only
Given a procedure and the list of items already documented in the chart, audits the note against the Medicare required-documentation checklist and returns what is satisfied, what is still missing (with rationale and suggested wording), a spotlight on commonly-missed gaps, and an overall completeness score. PREMIUM tier.
| Name | Required | Description | Default |
|---|---|---|---|
| procedure | Yes | Procedure name, id, or CPT code. | |
| documented | Yes | Items already documented — checklist item ids or free-text phrases (e.g. "MRI findings", "conservative care 8 weeks"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's audit role matches. The 'PREMIUM tier' note adds minor context about access, but no additional behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with core purpose. The 'PREMIUM tier' could be considered unnecessary but does not detract significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately lists the outputs (satisfied, missing, spotlight, completeness score). It could detail return format but is sufficient for an audit tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no new meaning beyond what the schema provides for 'procedure' and 'documented'. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'audits' and clearly identifies the resource ('note against Medicare required-documentation checklist'), distinguishing it from siblings like get_medicare_checklist which merely returns the checklist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool is used 'Given a procedure and the list of items already documented in the chart,' providing clear context. It lacks explicit when-not-to-use or alternatives, but the purpose is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contraindicationsGet Contraindications & Anticoagulation GuidanceARead-only
Given a procedure, returns its bleeding-risk level and the ASRA-aligned anticoagulant/antiplatelet stop-and-restart guidance (per agent), special considerations, and general pre-procedure safety checks. Always verify against the current ASRA guidelines and institutional policy. PREMIUM tier.
| Name | Required | Description | Default |
|---|---|---|---|
| procedure | Yes | Procedure name, id, or CPT code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so no contradiction. The description adds value by specifying that the tool includes guidance per agent, special considerations, and safety checks, and notes it is PREMIUM tier. It also warns that output should be verified, which is a useful behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is two sentences: the first clearly lists what the tool returns, the second provides an important caveat and tier. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, read-only, no output schema), the description covers all essential aspects: what it returns, the requirement to verify against guidelines, and the premium tier. Completeness is high for this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the 'procedure' parameter as 'Procedure name, id, or CPT code.' The tool description merely says 'Given a procedure,' adding no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool returns bleeding-risk level and ASRA-aligned anticoagulant guidance for a given procedure, with a specific verb and resource. It clearly distinguishes from sibling tools like get_cpt_codes or get_procedure_list through its unique focus on anticoagulation guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly advises using this tool when needing bleeding-risk and anticoagulation guidance, and explicitly warns to verify against current ASRA guidelines and institutional policy. However, it does not mention when not to use it or provide direct comparisons to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cpt_codesGet CPT CodesARead-only
Given a procedure (name, id, or CPT code), returns the primary CPT code(s), add-on codes, work RVUs, typical facility setting (office/ASC/hospital), and billing notes. FREE tier.
| Name | Required | Description | Default |
|---|---|---|---|
| procedure | Yes | Procedure name, id, or a CPT code to look up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the description adds value by noting the 'FREE tier' and specifying input flexibility (name, id, or CPT code) and output fields. This provides useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 25 words that efficiently communicates input, output, and tier status. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple 1-parameter tool with annotations covering read-only nature, the description sufficiently covers input, output fields, and the 'FREE tier' constraint. No output schema exists, but the description enumerates return fields, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter, and the description reinforces acceptable input formats (name, id, or CPT code). It adds meaning by clarifying the parameter's usage beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns CPT codes, add-on codes, work RVUs, facility setting, and billing notes for a given procedure. It distinguishes from sibling tools like get_procedure_list or get_icd10_codes which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (look up CPT codes for a procedure) but does not explicitly state when not to use it or mention alternatives. Sibling tool names are provided in context, but the description itself lacks explicit guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_denial_reasonsGet Denial Reasons & Appeal TemplatesARead-only
Given a procedure, returns the common payer denial reasons with their relative frequency, the concrete fix/remedy for each, and a ready-to-adapt appeal letter snippet. PREMIUM tier.
| Name | Required | Description | Default |
|---|---|---|---|
| procedure | Yes | Procedure name, id, or CPT code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=true, which the description does not contradict. The description adds detail on return content (frequency, fix, snippet) and notes 'PREMIUM tier,' indicating access level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences. The first sentence packs key details; the second is a single note. Slightly more integration could help, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter and no output schema, the description fully explains what the tool returns (denial reasons, frequency, fix, appeal snippet). No missing context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for 'procedure'. The description adds that it accepts a name, id, or CPT code, providing more specific guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns denial reasons, frequency, fix/remedy, and appeal snippets for a procedure. It distinguishes itself from siblings that deal with CPT codes or checklists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: when encountering payer denials and needing appeals. It does not explicitly state when not to use or give alternatives, but the sibling list provides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_icd10_codesGet ICD-10 CodesARead-only
Given a procedure, returns the approved/supportive ICD-10 diagnosis codes, codes to AVOID (common denial triggers), and coding tips for medical-necessity support. PREMIUM tier.
| Name | Required | Description | Default |
|---|---|---|---|
| procedure | Yes | Procedure name, id, or CPT code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, making it a safe read operation. The description adds behavioral details: it returns approved/supportive codes, avoidance codes, and tips. The 'PREMIUM tier' note hints at access restrictions but is not fully explained. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that conveys the input, output components, and tier. No unnecessary words, perfectly concise for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and no output schema, the description adequately outlines the output (codes, avoidance codes, tips). It could be more precise about the output format (e.g., list vs. structured), but it covers the essential information needed for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter 'procedure' described as 'Procedure name, id, or CPT code.' The description does not add any additional parameter semantics beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns ICD-10 diagnosis codes, codes to avoid, and coding tips for a given procedure. It distinguishes itself from siblings like get_cpt_codes (CPT codes) and get_contraindications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining ICD-10 codes, but lacks explicit guidance on when to use this vs. alternatives (e.g., when not to use, or when to use siblings). The context from sibling names provides some differentiation, but the description itself does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_medicare_checklistGet Medicare Documentation ChecklistARead-only
Given a procedure, returns the full Medicare/LCD documentation checklist: required documentation items with rationale and suggested chart wording, top denial triggers, and pre-submission admin checks. Flags items that are commonly missed. PREMIUM tier.
| Name | Required | Description | Default |
|---|---|---|---|
| procedure | Yes | Procedure name, id, or CPT code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds valuable behavioral context: it returns specific checklist components and mentions 'PREMIUM tier' (hinting at access restrictions). This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy, efficiently listing output categories. It front-loads the trigger ('Given a procedure') and packs dense information without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the main output components (items, rationale, wording, denial triggers, admin checks, missed items). It provides sufficient context for an agent to understand the tool's return value, though specific structure details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single 'procedure' parameter fully described. The description does not add additional semantic nuance beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a comprehensive Medicare/LCD documentation checklist for a given procedure, listing specific content like required items, rationale, chart wording, denial triggers, and admin checks. It distinguishes itself from sibling tools by specifying its comprehensive checklist nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing a checklist for a procedure ('Given a procedure'), but lacks explicit guidance on when not to use or alternatives among siblings like check_documentation_completeness or get_denial_reasons. The sibling list is diverse, so the purpose is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prior_auth_letterGenerate Prior Authorization LetterBRead-only
Generates a formal, payer-ready prior-authorization / medical-necessity letter for a procedure, merging supplied patient and clinical details with the procedure’s CPT codes, recommended primary ICD-10 code, evidence grade, and necessity rationale. Any field left unspecified is rendered as a clearly-marked fill-in blank. The structured medical-necessity worksheet is appended when available. PREMIUM tier.
| Name | Required | Description | Default |
|---|---|---|---|
| icd10 | No | Primary ICD-10 code; defaults to the recommended primary code. | |
| payer | No | Payer / insurance company name. | |
| memberId | No | Insurance member / Medicare beneficiary ID. | |
| diagnosis | No | Primary diagnosis narrative (e.g. "left L5 radiculopathy"). | |
| painScore | No | Pain score, e.g. "7/10 at rest, 9/10 with activity". | |
| procedure | Yes | Procedure name, id, or CPT code. | |
| patientDOB | No | Patient date of birth. | |
| patientName | No | Patient full name. | |
| providerNPI | No | Ordering provider NPI. | |
| providerName | No | Ordering provider name and credentials. | |
| imagingFindings | No | Relevant MRI/CT/X-ray findings with date. | |
| symptomDuration | No | Symptom duration, e.g. "5 months". | |
| conservativeCare | No | Failed conservative care with durations, e.g. "8 weeks PT, NSAIDs x6 weeks". | |
| includeWorksheet | No | Append the structured medical-necessity worksheet template (default true). | |
| functionalLimitations | No | Functional limitations narrative. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the tool 'generates' a letter, which is a write operation, but annotations declare readOnlyHint=true. This is a direct contradiction. The description does not clarify side effects, idempotency, or other behavioral traits beyond the fill-in blank note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused paragraph with no unnecessary words. It front-loads the primary action and adds key behavioral notes concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 15 parameters and no output schema, the description covers the generation process and behavior of unspecified fields, but lacks details on return format, synchronization, or limitations. The mention of 'PREMIUM tier' hints at access constraints but is not fleshed out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds general context (merging details, fill-in blanks, worksheet) but does not enhance understanding of individual parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a prior-authorization/medical-necessity letter, specifying it is payer-ready and merges supplied details with CPT codes, ICD-10, etc. This unambiguously distinguishes it from sibling tools that retrieve codes or checklists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a formal letter is needed, but does not explicitly state when to use this tool versus alternatives like get_cpt_codes or get_icd10_codes. No when-not or exclusion guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_procedure_listList Pain ProceduresARead-only
Returns the full catalog of interventional pain medicine procedures, grouped by category. Each entry includes the procedure id (used by other tools), display name, short name, and headline CPT code(s). Optionally filter by a category id or name. FREE tier.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional category filter (id like "epidural" or label like "Epidural Injections"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by specifying the return structure (grouped by category, fields included) and optional filtering. No contradiction, and the description provides useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states primary purpose and return content, second mentions optional filter and tier. Front-loaded, no unnecessary detail, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple catalog list with one optional parameter and no output schema, the description covers return fields, grouping, and filtering. It could mention whether results are paginated or limited, but given openWorldHint=false, a static catalog is implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description repeats the schema's parameter description ('filter by a category id or name'). No additional semantics are added beyond what the schema provides, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a catalog of interventional pain medicine procedures, grouped by category, with specific fields (id, name, CPT codes). It distinguishes from sibling tools like get_cpt_codes which return code lists, not procedure catalogs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for getting procedure IDs to use with other tools, but does not explicitly state when to use this tool versus siblings like get_cpt_codes or get_icd10_codes. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_research_evidenceGet Research EvidenceARead-only
Given a procedure, returns the overall evidence grade, a summary of the evidence base, and the key supporting studies (title, journal, year, and headline finding) for use in notes and appeals. PREMIUM tier.
| Name | Required | Description | Default |
|---|---|---|---|
| procedure | Yes | Procedure name, id, or CPT code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and description does not contradict. Description adds valuable behavioral context: output specifics (fields returned) and 'PREMIUM tier' indicating access restrictions, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose and output, second adds tier information. No verbose or redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description explicitly lists return fields (evidence grade, summary, studies with details). Provides usage context ('notes and appeals'). Complete for a simple query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description covers the single parameter fully (100% coverage), so description adds no extra parameter meaning. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns evidence grade, summary, and supporting studies for a given procedure. It distinguishes from siblings like get_cpt_codes and get_procedure_list, which deal with different aspects of medical data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the output is 'for use in notes and appeals,' providing clear usage context. However, it does not mention when not to use or offer alternative tools, though no direct sibling alternatives exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
check_documentation_completeness - First observed
get_contraindications - First observed
get_cpt_codes - First observed
get_denial_reasons - First observed
get_icd10_codes - First observed
get_medicare_checklist - First observed
get_prior_auth_letter - First observed
get_procedure_list - First observed
get_research_evidence
TDQS
Each tool has a clearly distinct purpose: CPT codes, procedure list, Medicare checklist, ICD-10 codes, contraindications, prior authorization letter, denial reasons, research evidence, and documentation completeness audit. No two tools overlap in functionality.
The majority of tools follow a 'get_' + noun pattern (e.g., get_cpt_codes, get_procedure_list). The only exception is check_documentation_completeness, which uses a different verb. This is a minor inconsistency but still readable.
With 9 tools, the surface is well-scoped for the domain of interventional pain medicine procedure preparation. Each tool addresses a specific clinical or administrative need without being overwhelming.
The tool set covers key workflow steps: coding, documentation requirements, contraindications, prior authorization, denial management, and evidence. Minor gaps exist (e.g., no tool for payer-specific policies or patient education materials), but core operations are present.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for medicare-coverage
Hosted MCP for denial, prior auth, reimbursement, workflow validation, batch scoring, and feedback.
Hybrid human + AI expertise for faster, trusted answers and decisions via MCP Server.
MCP server for detecting and redacting PII (Personally Identifiable Information) in PDF documents.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides access to PubMed and NCBI's biomedical literature database for searching articles, retrieving metadata, and tracking citations. It enables users to explore related research, browse MeSH vocabulary, and find free full-text links.6MIT
- AlicenseBqualityDmaintenanceThis MCP server provides 16 intelligent tools for searching, retrieving, and linking biomedical literature from PubMed and PMC. It enables LLM applications to perform complex queries, batch processing, and cross-database linking.168MIT
- AlicenseAqualityBmaintenanceMCP server for healthcare claims workflow scoring, validation, and feedback, supporting denial risk, prior authorization, and reimbursement assessment.8MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables coding agents to search academic papers, ingest full-text PDFs, extract structured details, and manage citations in literature research workflows.25MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PrepQ-Health/painprep-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server