Appeal My Claim
Server Details
Appeal a denied US health insurance claim: denial codes, rights, deadlines and a draft letter.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GoodTurnStudio/goodturn-mcp
- GitHub Stars
- 0
- Server Listing
- goodturn-mcp
TDQS
Scored across 4 tools
Each tool targets a distinct aspect: drafting a letter, explaining denial codes, retrieving deadlines, and retrieving rights. Slight overlap exists because get_appeal_rights also returns deadlines, but descriptions clearly differentiate primary purposes.
All tool names use snake_case with a leading verb (draft, explain, get), forming a consistent verb_noun pattern. No deviations.
Exactly four tools cover the core appeal workflow: understanding denial, knowing deadlines, knowing rights, and drafting a letter. Each tool is necessary and no redundant tools exist.
The surface covers key pre-submission steps well, but lacks tools for post-submission tracking or finding plan-specific forms. These are minor gaps that agents can work around or that are intentionally out of scope.
Available Tools
4 toolsdraft_appeal_letterDraft an appeal letter for the user to review and sendARead-onlyIdempotentInspect
Draft an appeal letter for the user to review and send. For requests like "my insurer denied my MRI as not medically necessary, help me appeal" or "write an appeal letter for an out-of-network denial". Returns a letter as plain text with [brackets] for anything not given, a checklist of what to attach (denial notice, doctor's letter of medical necessity, records), and tips. It never sends or files anything.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date of service. | |
| name | No | Member's name. | |
| plan | No | Insurer or plan name. | |
| claim | No | Claim or reference number. | |
| doctor | No | Treating doctor's name. | |
| reason | No | Why the claim was denied: medical_necessity, emergency (said it wasn't an emergency), experimental, out_of_network, prior_auth, coding or generic. Required unless denial_code is given. | |
| urgent | No | Set to yes to ask for an expedited review. | |
| details | No | A sentence or two in the user's words on why the care should be covered. | |
| service | No | The care that was denied, like "MRI of the right knee". | |
| provider | No | Hospital, clinic or provider name. | |
| member_id | No | Member ID or Medicare number. | |
| plan_type | No | Same values as plan_type in get_appeal_rights. Changes the wording for Medicare. | |
| denial_code | No | The reason code on the notice, like CO-50 or PR-197. Picks the reason when reason is left out, and is quoted in the letter. | |
| denial_date | No | Date on the denial notice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=true, so the safety profile is covered; the description usefully goes beyond that by specifying the return shape (plain text letter, [bracketed] placeholders for missing data, attachment checklist, tips) and asserting it 'never sends or files anything', which is the key side-effect boundary. It stops short of describing how placeholders behave with required-but-absent inputs like the reason/denial_code pairing.
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?
Three sentences, no waste: purpose first, then trigger examples, then return contract and side-effect boundary. Information is front-loaded and 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?
There is no output schema, and the description compensates by describing the return payload (letter text, placeholders, attachment checklist, tips) as well as the no-send guarantee. For a 14-parameter, zero-required generation tool, the combination of trigger examples, output description, and behavior boundary gives an agent enough to call it correctly.
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%, so the schema already documents all 14 parameters, including the reason enum values and the denial_code fallback rule. The description adds only indirect signal about parameters via its example phrasings and the bracket-placeholder convention. Baseline 3 is appropriate when the schema carries the semantic load.
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?
States a specific verb+resource ('Draft an appeal letter') and immediately adds the scope boundary ('for the user to review and send'), which separates it from the sibling read-only lookups (get_appeal_rights, get_appeal_deadlines, explain_denial_code). The title and description align exactly, and an agent can tell this is the generative tool among informational siblings.
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?
Provides two concrete trigger utterances ('my insurer denied my MRI as not medically necessary, help me appeal' and 'write an appeal letter for an out-of-network denial') that map directly to the reason enum, giving clear context for when to invoke. It does not, however, name the sibling tools or state when not to use this one (e.g., when the user only wants deadlines or rights information).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_denial_codeExplain the denial codes on an Explanation of BenefitsARead-onlyIdempotentInspect
Explain the denial codes on an Explanation of Benefits. For requests like "my EOB says CO-50, what does that mean?", "what is denial code PR 204?" or "what does N130 mean?". Returns each code in plain words, who usually fixes it (the provider's billing office, an appeal, or the user), whether the provider can bill the user for it (from the group code CO, PR, OA or PI), and a letter link when an appeal fits.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | One to four codes from the notice, like CO-50, PR 204, 197 or N130. | |
| plan_type | No | Same values as plan_type in get_appeal_rights. Carried into the letter link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantive disclosure about the response: plain-language meaning, who fixes it, billability derived from group code, and a conditional letter link. With no output schema, this return-shape detail carries real weight; only per-code edge cases (invalid/unknown codes) are unaddressed.
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?
Purpose is front-loaded in one sentence, with the examples and return-content list following compactly. The three example queries are slightly redundant with one another but each demonstrates a different code format, so they mostly earn their 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?
With only 2 simple params, no output schema and annotations handling safety, the description is nearly sufficient: it covers input formats, output semantics, and downstream behavior. Only multi-code batching behavior and invalid-code handling are left implicit.
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%, so the baseline is 3, but the description adds genuine meaning: the CO/PR/OA/PI group-code explanation teaches the agent how the 'code' value is composed, and it notes plan_type is carried into the letter link. That is value beyond the schema text.
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?
Specific verb 'explain' plus the exact resource 'denial codes on an Explanation of Benefits', reinforced by real example inputs (CO-50, PR 204, N130). It is clearly distinguishable from siblings like draft_appeal_letter or get_appeal_deadlines, which is exactly what the letter-link framing implies.
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 three quoted user phrasings make the trigger condition concrete and unambiguous. It stops short of explicitly routing away from siblings (e.g. 'for deadlines use get_appeal_deadlines'), so it is clear context but not full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_appeal_deadlinesHow long someone has to appeal, and how fast the plan must decideARead-onlyIdempotentInspect
How long someone has to appeal, and how fast the plan must decide. For requests like "how long do I have to appeal?", "when is my appeal due?" or "how fast does my insurer have to answer?". With the date on the denial notice, gives an approximate file-by date. The date on the user's own notice is the one that counts.
| Name | Required | Description | Default |
|---|---|---|---|
| urgent | No | Set to yes if waiting could seriously harm the person's health. | |
| plan_type | No | Same values as plan_type in get_appeal_rights. Default: most private plans. | |
| denial_date | No | Date on the denial notice, like 2026-09-01, 09/01/2026 or September 1, 2026. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered. The description adds genuinely useful behavior: it returns an approximate file-by date derived from the denial notice date, and warns that the date on the user's own notice governs. It doesn't describe output shape, but with annotations this is solid.
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?
Front-loaded with the core purpose, then example queries, then the key caveat. The three example phrases are mildly redundant but serve retrieval matching; no dead sentences.
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?
No output schema exists, and the description covers the meaningful return (an approximate deadline) plus the authoritative-date caveat. Parameters, defaults and the urgent flag are carried by the schema, so an agent has enough to invoke it correctly.
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%, so all three parameters (including the urgent enum and plan_type cross-reference) are already documented. The description adds only the linkage that denial_date yields an approximate file-by date, which is minor value over the schema. Baseline 3 applies.
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 a specific resource and scope: appeal filing deadlines plus the plan's decision-speed obligation. It is clearly distinct in domain from explain_denial_code and draft_appeal_letter, though it never explicitly distinguishes itself from get_appeal_rights, which is the nearest sibling.
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?
It names concrete user phrasings ('how long do I have to appeal?', 'how fast does my insurer have to answer?') that map to this tool and ties invocation to having the denial notice date. No when-not-to-use or sibling routing is given, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_appeal_rightsAppeal rights, steps and free help for a plan type and stateARead-onlyIdempotentInspect
Appeal rights, steps and free help for a plan type and state. For requests like "what are my appeal rights in California?", "my insurer denied my claim, what can I do?" or "how do Medicare appeals work?". Returns who decides, the steps (internal appeal, external review, Medicare levels or Medicaid fair hearing), deadlines, and where to get free help, including the state insurance department. If the plan type is not known, leave it out to get the rules for most private plans.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | US state name or two-letter code, like California or CA. Puerto Rico works too. | |
| plan_type | No | Plan type: marketplace, employer, employer_insured, employer_self_funded, medicare, medicare_advantage, part_d or medicaid. Everyday words work too, like "job", "Obamacare" or "Medi-Cal". Default: most private plans. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's job is to add substance — and it does, enumerating the return contents (who decides, internal appeal / external review / Medicare levels / fair hearing, deadlines, free help) and the default behavior when plan_type is omitted. No auth or rate-limit caveats, but none appear necessary for a public lookup.
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?
Front-loads the purpose, then examples, then return contents, then the omission rule — a sensible order with no filler. The three example questions are slightly redundant with the opening clause but earn their place by mapping natural user phrasing to the tool.
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?
With only two optional, fully documented parameters and no output schema, the description supplies enough to call the tool correctly: the return shape is described and the optionality of plan_type is clarified. Nothing operationally necessary is missing, though the undefined boundary with get_appeal_deadlines leaves minor overlap ambiguity.
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%, so the baseline is 3; both parameters are already well documented in the schema, including accepted everyday synonyms and the default. The description's only added nuance is the advice to omit plan_type when unknown, which largely restates the schema's 'Default: most private plans.'
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?
States a specific resource and scope — appeal rights, steps, and free help — with the qualifiers (plan type, state) that define the lookup. It does not explicitly contrast itself with get_appeal_deadlines, whose territory (deadlines) this description also claims, so sibling differentiation is only implicit.
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?
Gives three concrete trigger phrasings ('what are my appeal rights in California?', 'my insurer denied my claim...', 'how do Medicare appeals work?') and a clear instruction for the missing-parameter case. It stops short of naming when to prefer a sibling such as get_appeal_deadlines or draft_appeal_letter.
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.
4 tool updates
- Changed
draft_appeal_letter3 fields changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"Same values as /v1/rights. Changes the wording for Medicare."New value: +"Same values as plan_type in get_appeal_rights. Changes the wording for Medicare." - changed
Input schema / properties / reason / descriptionPrevious value: -"Why the claim was denied: medical_necessity, emergency (said it wasn't an emergency), experimental, out_of_network, prior_auth, coding or generic. Plain words work too. Required unless denial_code is given."New value: +"Why the claim was denied: medical_necessity, emergency (said it wasn't an emergency), experimental, out_of_network, prior_auth, coding or generic. Required unless denial_code is given." - changed
Input schema / properties / urgent / descriptionPrevious value: -"yes to ask for an expedited review."New value: +"Set to yes to ask for an expedited review."
- Changed
explain_denial_code1 field changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"Same values as /v1/rights. Carried into the letter link."New value: +"Same values as plan_type in get_appeal_rights. Carried into the letter link."
- Changed
get_appeal_deadlines2 fields changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"Same values as /v1/rights. Default: most private plans."New value: +"Same values as plan_type in get_appeal_rights. Default: most private plans." - changed
Input schema / properties / urgent / descriptionPrevious value: -"yes if waiting could seriously harm the person's health."New value: +"Set to yes if waiting could seriously harm the person's health."
- Changed
get_appeal_rights1 field changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"marketplace, employer, employer_insured, employer_self_funded, medicare, medicare_advantage, part_d or medicaid. Everyday words work too, like \"job\", \"Obamacare\" or \"Medi-Cal\". Default: most private plans."New value: +"Plan type: marketplace, employer, employer_insured, employer_self_funded, medicare, medicare_advantage, part_d or medicaid. Everyday words work too, like \"job\", \"Obamacare\" or \"Medi-Cal\". Default: most private plans."
4 tool updates
- First observed
draft_appeal_letter - First observed
explain_denial_code - First observed
get_appeal_deadlines - First observed
get_appeal_rights
Related MCP Connectors
US health-insurance claim denials and appeal outcomes, by insurer.
Insurer denial rates, appeal outcomes by treatment and condition, and appeal rights lookups.
Is your US medical bill fair? Compares charges with Medicare rates and drafts a dispute letter.
Medigami patient tools: rates, markups, denial codes, deadlines, overturn rates, procedure codes
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying US health-insurance claim denial rates and appeal outcomes by insurer, with tools for filtering by state and market and obtaining detailed profiles and coverage info.20 npmMIT
- AlicenseAqualityDmaintenanceEnables AI assistants to analyze insurance denial appeals, providing win probabilities, appeal strategies, payer behavioral intelligence, and regulatory leverage for any CPT code.521 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to look up medical billing codes, denial reasons, and payer rules for faster claim resolution.66MIT
- AlicenseAqualityCmaintenanceHealthcare billing AI for agents — 12 tools for ICD-10/CPT/HCPCS code lookup (80K+ codes), prior auth prediction, medical NER, claims validation, HIPAA compliance auditing, and provider/drug enrichment. Pay-per-call via credits or USDC.2042 npm3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.