accueil / serveurs / Finance & Paiement / com.medbillanalyzer/medbillanalyzer
com.medbillanalyzer/medbillanalyzer
serveur MCP (Model Context Protocol) · medbillanalyzer 0.1.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.medbillanalyzer/medbillanalyzer est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.medbillanalyzer/medbillanalyzer » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 7 outils
- check_medical_bill≈ 8660 tokens
Compare a medical bill against the Explanation of Benefits the patient’s insurer issued for the same care, and report where the two disagree. Use when someone shares a medical bill, hospital statement, doctor bill, lab bill or EOB and asks whether it is correct, what they actually owe, or how to dispute it. The bill is required; the EOB is strongly recommended and is what makes most of the checks possible. If you can see the documents but cannot attach their bytes, transcribe them into `bill` and `eobs` exactly as printed. Free: returns a summary and the title of every finding, but not the detail behind them.
Paramètres, retour & exemple (7)
Paramètreseob· object · optionnel
A single Explanation of Benefits, already transcribed.bill· object · optionnel
The bill already transcribed into structured form. Prefer `bill_document` when you can send the file itself or a link to it: the transcription is then done by a reader tuned for these forms and checked against a field-accuracy harness. Use this field when you can READ the bill but cannot send its bytes — for example, an assistant looking at a file the patient attached to the conversation. Copy what is printed: money and dates as the strings on the page ("$1,204.37", "03/14/2026"), every line, and nothing that is not there. File contents belong in `bill_document`.eobs· array · optionnel
Every Explanation of Benefits covering this bill, already transcribed. Use this rather than `eob` whenever there is more than one — a hospital statement usually spans several claims and each claim has its own EOB. Supplying only one of them leaves the rest of the bill looking unmatched, which produces findings about charges the plan did in fact process.label· string · optionnel
A short human label for this case.eob_document· object · optionnel
The Explanation of Benefits as a file, read for you. It usually sits behind the insurer’s login, which is what `upload_id` is for. Send it one of three ways: `data_base64` if you have the bytes; `upload_id` if the patient has to fetch the file themselves — reserve a slot with `POST /v1/uploads` and PUT the file there first; `url` if you only have a public https link. Send exactly one; if more than one is present, `data_base64` wins, then `upload_id`, then `url`. None of them is a promise the file is readable; that is decided from the bytes after they arrive.bill_document· object · optionnel
The bill as a file, read for you. Use this when you have the document itself — a photo, a scan, or a PDF from the provider’s portal. Send it one of three ways: `data_base64` if you have the bytes; `upload_id` if the patient has to fetch the file themselves — reserve a slot with `POST /v1/uploads` and PUT the file there first; `url` if you only have a public https link. Send exactly one; if more than one is present, `data_base64` wins, then `upload_id`, then `url`. None of them is a promise the file is readable; that is decided from the bytes after they arrive.good_faith_estimate· string · optionnel
The total on the written Good Faith Estimate the provider gave the patient before the care, as printed — "$1,204.37". Needed for the self-pay check: under the No Surprises Act a self-pay bill that comes in $400 or more above the written estimate can be disputed through the federal patient-provider dispute resolution process, and that check cannot run without this figure. Leave it out if there was no written estimate.
Exemple d'appel{"name": "check_medical_bill", "arguments": {"eob": {}, "bill": {}, "eobs": [], "label": "texte", "eob_document": {}, "bill_document": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_case≈ 248 tokens
Delete everything held about a case, immediately and permanently. The record is removed, not flagged, and it cannot be recovered afterwards — not by us either. This is the promise the privacy policy makes, and it needs no account. It does need the delete token issued when the case was created: reading a case and destroying it are deliberately different capabilities.
Paramètres, retour & exemple (2)
Paramètrescase_id· string · requisdelete_token· string · requis
The one-time token returned by check_medical_bill. Deleting is a separate capability from reading on purpose: a case link can end up in a browser history or a forwarded message, and whoever finds it should not be able to destroy the record.
Exemple d'appel{"name": "delete_case", "arguments": {"case_id": "texte", "delete_token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - export_case≈ 142 tokens
Everything stored about a case, as JSON, in one response. This is the portable copy the privacy policy offers. It is deliberately the whole record rather than a summary, so that what is returned here can be compared against what the policy says is kept.
Paramètres, retour & exemple (1)
Paramètrescase_id· string · requis
Exemple d'appel{"name": "export_case", "arguments": {"case_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_case≈ 106 tokens
Retrieve a case by id. Returns the same free summary, plus every finding in detail once the case has been unlocked.
Paramètres, retour & exemple (1)
Paramètrescase_id· string · requis
Exemple d'appel{"name": "get_case", "arguments": {"case_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_case_outputs≈ 340 tokens
Get the dispute letter and the phone script for an unlocked case. The letter is a template the patient sends in their own name.
Paramètres, retour & exemple (7)
Paramètrescase_id· string · requisinclude_pdf· boolean · optionnel
Also return the letter as a print-ready PDF (base64). One page where it fits, addressed for a #10 window envelope, with fold marks.letter_date· string · optionnel
The date to print on the letter, as MM/DD/YYYY. Send the USER's local date: the server runs in UTC, so without this a patient in a western timezone can be handed a letter dated tomorrow, and it is the date the 30-day response window is counted from. Omit it to use the server's date.patient_name· string · requis
As it should appear on the letter.account_number· string · optionnelreply_to_lines· array · optionnel
Where the provider should write back.provider_address_lines· array · optionnel
Exemple d'appel{"name": "get_case_outputs", "arguments": {"case_id": "texte", "patient_name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - report_outcome≈ 334 tokens
Record what happened after the patient sent the dispute letter: corrected, reduced, refused, ignored, still waiting, or not sent. Free. Every answer counts equally, and it is kept only as an aggregate count — nothing about it is stored against the case. This product can tell that two documents disagreed; only these reports show whether saying so to a billing office changes anything.
Paramètres, retour & exemple (3)
Paramètrescase_id· string · requisoutcome· string · requis · corrected | reduced | refused | ignored | waiting | not_sent
`corrected` the charge was removed in full; `reduced` some of it came off; `refused` they said no; `ignored` no reply at all; `waiting` sent but nothing back yet; `not_sent` the patient decided not to send it.amount_written_off· string · optionnel
What the provider actually took off the bill, as printed — "$412.30". The one number that says whether any of this works. Omit if nothing came off or it is not known yet.
Exemple d'appel{"name": "report_outcome", "arguments": {"case_id": "texte", "outcome": "corrected"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - unlock_case≈ 574 tokens
Pay to unlock the full findings, the dispute letter and the phone script. With a `shared_payment_token` (a Stripe Shared Payment Token granted to the `stripe_profile` in the case summary's `purchase`), it charges $10.00 for this bill and unlocks the case in the same call. Without one, it returns a checkout URL and charges nothing itself. A case with no findings is refused: there is nothing to buy, and the user pays nothing when nothing is found. So is a case with nothing to act on yet (`nothing_to_act_on`), such as a bill sent without its Explanation of Benefits whose only finding is that the EOB is missing.
Paramètres, retour & exemple (4)
Paramètresplan· string · optionnel · one_bill | subscription
"one_bill" is $10 for this bill, charged once. "subscription" is the monthly membership, which unlocks up to 25 bills a calendar month for anyone in a household. It is sold only while the case summary's `purchase.options` lists it; otherwise unlock_case answers `monthly_tier_paused` and charges nothing. A member who already has a code passes `membership_token` instead.case_id· string · requismembership_token· string · optionnel
An existing membership. If the user already subscribed, pass the token they were given and this bill unlocks immediately with nothing charged — a membership covers up to 25 bills a calendar month, including other people in the family. A membership that has used its 25 bills for the month answers membership_cap_reached; it is still valid, and a one-off unlock still works.shared_payment_token· string · optionnel
A Stripe Shared Payment Token (`spt_…`) granted to the `stripe_profile` in the case summary's `purchase`, for at least $10.00 USD. When present, this call charges it once and unlocks the case; no checkout URL is returned. One bill only: a token pays once, so it cannot buy the membership, which renews. Present only when `purchase.options[].pay_with_shared_payment_token` is true.
Exemple d'appel{"name": "unlock_case", "arguments": {"case_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».