Enables AI-assisted telehealth workflows for browsing medications, completing intake, signing consent, placing orders, and managing treatment via streamable HTTP.
Do not connect
A critical issue was found. Do not connect this server as-is.
Scanned 28 days ago Due for re-check
A server can change after it's graded. Re-run the automated scan to refresh this report.
This grade is deterministic and reproducible: the same server surface always yields the same grade under a given algorithm version. It is a real automated assessment computed by the MCPGrade engine from what the probe actually observed — not a fabricated or opinion score. It is not a manual human pentest, so it can miss context-specific risks.
Every signal below was measured directly by the automated probe. The grade is derived only from evidence like this — nothing is assumed.
The doctormcp MCP server exposes 34 tools, focused primarily on network and communication capabilities. Its published description reads: "Enables AI-assisted telehealth workflows for browsing medications, completing intake, signing consent, placing orders, and managing treatment via streamable HTTP". It communicates over Streamable HTTP using the 2025-06-18 protocol revision, and does not require authorization to connect. MCPGrade currently rates doctormcp F — a critical issue was found and the server should not be connected as-is. Its most notable findings include "Data-exfiltration parameters" and "Cross-tool shadowing". This report is a deterministic, reproducible automated assessment: the same observed surface always yields the same grade under a given algorithm version, and it is refreshed as new scans arrive and free to read — but it is not a substitute for a manual human security review. Always re-check doctormcp's advertised tools, transport security, and authorization posture before connecting an autonomous agent or sharing sensitive context with it.
Add doctormcp to an MCP client using the endpoint below. Review the grade and findings above before granting an autonomous agent access.
MCP endpoint
https://mcp.chia.health/Streamable HTTP transport. This is the MCP endpoint, not a website — paste it into your MCP client server list rather than a browser.
Captured passively during the read-only scan. Click any value to find servers that match it.
The tools this server advertises via tools/list — names, purposes, and the parameters each accepts, exactly as enumerated read-only.
Start a patient session by providing their contact information. Sends a 6-digit verification code to the patient's email. Returns a session_id (NOT a token). The session_id is used with auth_verify_ot
Verify the 6-digit code sent to the patient's email. Returns a guest-scope bearer token for intake, consent, order, and checkout tools. Requires the session_id from auth_start — no email needed. After
Sorted worst-first. Each finding shows its severity, what it means, its OWASP MCP Top-10 mapping, and a recommended fix — the check id links to the exact methodology row that produced it.
tool: auth_start
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
ssion_id (NOT a token). The session_id is used with auth_verify_otp tRecommendationRemove side-channel parameters; constrain tool inputs.
tool: auth_start
A tool description tries to alter the model’s use of another tool.
id is used with auth_verify_otp to prove email ownership and get a bearer tokenRecommendationDescriptions must describe only their own tool.
tool: auth_verify_otp
A tool description tries to alter the model’s use of another tool.
session_id from auth_start — no email needed. After checkout and payment,RecommendationDescriptions must describe only their own tool.
tool: auth_resend_otp
A tool description tries to alter the model’s use of another tool.
session_id from auth_start — no email needed.RecommendationDescriptions must describe only their own tool.
tool: auth_check_payment
A tool description tries to alter the model’s use of another tool.
uest token from auth_verify_otp as bearer_token.RecommendationDescriptions must describe only their own tool.
tool: auth_check_payment
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: medications_pricing
A tool description tries to alter the model’s use of another tool.
edication — use medications_details first to see available plan_months values. SuppRecommendationDescriptions must describe only their own tool.
tool: eligibility_check
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
ight from prior conversation context, you may pre-fill — but read the valuesRecommendationRemove side-channel parameters; constrain tool inputs.
tool: intake_questions
A tool description tries to alter the model’s use of another tool.
before calling `intake_submit`. Never silently submit assumed values. ReturnRecommendationDescriptions must describe only their own tool.
tool: intake_submit
A tool description tries to alter the model’s use of another tool.
All fields from intake_questions must be completed. Returns an intake ID and estRecommendationDescriptions must describe only their own tool.
tool: intake_submit
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: intake_status
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: consent_list
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
"Authentication token for the patient session","title":"Bearer Token"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: consent_list
A tool description tries to alter the model’s use of another tool.
ndividually via consent_text and confirmed by the patient before proceeding.RecommendationDescriptions must describe only their own tool.
tool: consent_list
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: consent_text
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
verbatim in the conversation — do not summarize or paraphrase. Includes: conRecommendationRemove side-channel parameters; constrain tool inputs.
tool: consent_text
A tool description tries to alter the model’s use of another tool.
agent can call consent_submit. Requires authentication.RecommendationDescriptions must describe only their own tool.
tool: consent_text
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: consent_submit
A tool description tries to alter the model’s use of another tool.
sent text (from consent_text) to the patient and received explicit confirmatRecommendationDescriptions must describe only their own tool.
tool: consent_submit
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: consent_status
A tool description tries to alter the model’s use of another tool.
his is a gate — order_create will reject if consents are incomplete. RequireRecommendationDescriptions must describe only their own tool.
tool: consent_status
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: order_create
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: order_status
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: order_documents
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
"Authentication token for the patient session","title":"Bearer Token"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: order_documents
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: order_upload
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
"Base64-encoded file content (PDF, JPEG, or PNG, max 10MB)","title":"File BaRecommendationRemove side-channel parameters; constrain tool inputs.
tool: order_upload
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: checkout_create
A tool description tries to alter the model’s use of another tool.
(SPT) and call checkout_complete to pay instantly. 2. **Payment link (fallback)*RecommendationDescriptions must describe only their own tool.
tool: checkout_create
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: checkout_update
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: checkout_complete
A tool description tries to alter the model’s use of another tool.
yment_url` from checkout_create instead, then poll checkout_status. Requires auRecommendationDescriptions must describe only their own tool.
tool: checkout_complete
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: checkout_status
A tool description tries to alter the model’s use of another tool.
yment_url` from checkout_create). When the patient pays via the link, this toolRecommendationDescriptions must describe only their own tool.
tool: checkout_status
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: checkout_cancel
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: portal_log_weight
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: portal_log_side_effects
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: portal_message
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
"Authentication token for the patient session","title":"Bearer Token"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: portal_message
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: portal_care_plan
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: portal_refill
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: portal_support
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: provider_questions
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: provider_respond
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "bearer_token"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
tool: (server instructions)
A tool description tries to alter the model’s use of another tool.
efore you call `eligibility_check`, `intake_submit`, or `order_create`, you MUSTRecommendationDescriptions must describe only their own tool.
The server accepts tool enumeration (and likely invocation) with no authentication.
RecommendationRequire OAuth 2.1 authorization for any server exposing non-public tools.
tool: auth_start
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: auth_verify_otp
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: auth_resend_otp
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: medications_list
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: medications_details
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: medications_availability
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: medications_pricing
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: medications_categories
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: eligibility_check
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: intake_questions
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: intake_submit
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: consent_submit
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: order_create
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: order_upload
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: checkout_create
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: checkout_update
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: checkout_complete
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: checkout_cancel
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: portal_log_weight
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: portal_log_side_effects
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: portal_message
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: portal_refill
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: portal_support
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: provider_respond
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: intake_questions
An unusually long description is a common injection-padding tactic.
description length 2041 charsRecommendationKeep descriptions concise.
Vantaj uptime monitoring via MCP — manage monitors, heartbeats, incidents, and status pages.
Unified gateway to Algeria's TKAWEN ecosystem: commerce, certification, and AI tools.
Provides access to the Cohereon Doctrine AI safety framework with governance components, tiered access, and agent onboarding.
Agentic rails for complex workflows with receipts, fees, and MCP tool access.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Resend the verification code to the patient's email. Use this if the original code expired (5-minute window) or was not received. Requires the session_id from auth_start — no email needed.
Check if the patient has completed payment and upgrade the token to full scope. Call this after sharing the checkout payment link with the patient. Poll every 10-15 seconds. When payment is detected,
List all available prescription medications including GLP-1 weight loss drugs (compounded semaglutide, compounded tirzepatide), peptide therapies (sermorelin for growth hormone support, NAD+ for cellu
Get detailed information about a specific medication including: all available dosage strengths and titration schedules, available forms (injectable vials, pre-filled syringes, oral dissolving tablets,
Check if a specific medication is available for shipping to the patient's state. Some compounded medications have state-specific restrictions based on pharmacy licensing. Returns availability status a
Get detailed pricing for a specific medication, form, and plan duration. Returns price breakdown including medication cost, provider consultation fee, shipping, and any applicable discounts for longer
List all medication categories available through the telehealth platform: Weight Loss (GLP-1 medications), Peptide Therapy (sermorelin, growth hormone peptides), Anti-Aging & Longevity (NAD+, glutathi
Pre-screen a patient's basic eligibility for telehealth prescription services. Required: age (18+) and state (where the patient resides). Optional: BMI (20+ required for GLP-1 / weight-loss products),
Get the medical intake questionnaire for the chosen medication(s). The questionnaire is product-aware: GLP-1 / weight-loss medications return weight-loss goals, GLP-1 history, and MTC/MEN2 screening;
Submit a completed medical intake questionnaire for provider review. All fields from intake_questions must be completed. Returns an intake ID and estimated provider review time. The intake is reviewed
Check the current status of a previously submitted intake questionnaire. Returns whether the intake is under review, approved, or denied by a licensed healthcare provider. Use this to poll for provide
Get the list of all consent documents a patient must accept before ordering medication. Returns consent IDs, titles, summaries, and order of presentation. Required consents include: telehealth informe
Fetch the full text of a specific consent document for patient review. Returns the complete consent document split into titled sections that the agent MUST present to the patient verbatim in the conve
Record a patient's consent confirmation for a specific consent document. The agent must have already presented the full consent text (from consent_text) to the patient and received explicit confirmati
Check whether all required consents are complete for a patient intake. Returns status of each consent and whether the patient can proceed to ordering. This is a gate — order_create will reject if cons
Create a new prescription medication order. The patient must have completed intake questionnaire and consent before ordering. Required: medication name, selected form (injectable, tablet, drops), plan
Get the current status of a medication order. Returns status (pending_review, provider_reviewing, approved, needs_info, denied, compounding, shipped, delivered), tracking information, and delivery est
Get the list of documents a patient needs to upload for their order. Returns required documents (photo ID, selfie for verification) with upload status and accepted file formats. Requires authenticatio
Upload a verification document for a medication order. Accepts photo ID and selfie as base64-encoded files. Supported formats: PDF, JPEG, PNG. Maximum size: 10MB. Requires authentication.
Initiate a checkout session for a medication order. Returns checkout details including line items, total, and payment options. TWO PAYMENT PATHS are supported: 1. **Stripe ACP (preferred)**: If your p
Update an existing checkout session. Can modify shipping method, apply promo codes, or update customer details before payment is completed. Requires authentication.
Complete payment using Stripe ACP (Shared Payment Token). Only use this if your platform supports Stripe Agentic Commerce Protocol and can provision an SPT. If your platform does NOT support ACP, use
Check the payment status of a checkout session. Use this to poll for completion after sending the patient a payment link (the `payment_url` from checkout_create). When the patient pays via the link, t
Cancel an in-progress checkout session. Releases any held inventory and cancels the associated Stripe PaymentIntent if not yet captured. Requires authentication.
Log a patient's weight for tracking progress on their treatment plan. Requires patient_id, weight in pounds, and date (ISO 8601). Requires authentication.
Log side effects a patient is experiencing. If severity is 'severe', the case is auto-flagged for immediate provider review and returns urgent guidance. Requires authentication.
Send a message to the patient's healthcare provider. Returns sent confirmation and estimated response time. Urgent messages (containing keywords like 'emergency', 'chest pain', 'difficulty breathing')
Get the patient's current care plan including: current medication, current dosage, titration schedule, next dose adjustment date, upcoming refill date, provider notes, and weight progress summary. Req
Request a medication refill for the patient's current prescription. Creates a refill order that will be reviewed by a provider within 24-48 hours. Requires authentication.
Contact customer support with a question or issue. Creates a support ticket and returns the ticket ID and estimated response time. Requires authentication.
Get follow-up questions from the healthcare provider for a specific order. The provider may request additional information before making a prescribing decision. Returns the questions if the order stat
Submit answers to provider follow-up questions for a specific order. The responses are sent to the provider for review. Returns confirmation and updated order status. Requires authentication.