Connects AI assistants to Chia Health's telehealth prescription platform for weight loss and longevity treatments. Exposes 34 tools across medication discovery, medical intake questionnaires, consent document signing, order placement with ID verification, and Stripe payment processing via ACP tokens or authenticated magic links. Public tools let users browse GLP-1 medications and check eligibility without auth. OTP-based authentication unlocks guest scope for completing intake and checkout, then upgrades to full scope post-payment for care plan access, weight logging, provider messaging, and refills. All prescriptions go through licensed US providers. Runs as a remote server over streamable HTTP, so you just point your MCP client at the URL without local installation.
Public tool metadata for what this MCP can expose to an agent.
medications.listList all available prescription medications including GLP-1 weight loss drugs (compounded semaglutide, compounded tirzepatide), peptide therapies (sermorelin for growth hormone support, NAD+ for cellular energy and anti-aging, glutathione for antioxidant support), and other co...1 paramsList all available prescription medications including GLP-1 weight loss drugs (compounded semaglutide, compounded tirzepatide), peptide therapies (sermorelin for growth hormone support, NAD+ for cellular energy and anti-aging, glutathione for antioxidant support), and other co...
client_ipstringmedications.detailsGet detailed information about a specific medication including: all available dosage strengths and titration schedules, available forms (injectable vials, pre-filled syringes, oral dissolving tablets, sublingual drops), all active plan options with pricing for each, what's inc...3 paramsGet detailed information about a specific medication including: all available dosage strengths and titration schedules, available forms (injectable vials, pre-filled syringes, oral dissolving tablets, sublingual drops), all active plan options with pricing for each, what's inc...
categoryvalueclient_ipstringmedicationstringmedications.availabilityCheck 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 and reason if unavailable.3 paramsCheck 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 and reason if unavailable.
statestringclient_ipstringmedicationstringmedications.pricingGet 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 plans. Plan durations vary by medication — use medications.details first to...4 paramsGet 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 plans. Plan durations vary by medication — use medications.details first to...
formstringclient_ipstringmedicationstringplan_monthsintegermedications.categoriesList all medication categories available through the telehealth platform: Weight Loss (GLP-1 medications), Peptide Therapy (sermorelin, growth hormone peptides), Anti-Aging & Longevity (NAD+, glutathione), and other treatment categories. Each category includes a description an...1 paramsList all medication categories available through the telehealth platform: Weight Loss (GLP-1 medications), Peptide Therapy (sermorelin, growth hormone peptides), Anti-Aging & Longevity (NAD+, glutathione), and other treatment categories. Each category includes a description an...
client_ipstringeligibility.checkPre-screen a patient's basic eligibility for telehealth prescription services. Checks: age (must be 18+), state (must be where our providers are licensed), BMI (must be 20+), pregnancy status (must not be pregnant, planning pregnancy, or breastfeeding), and medical conditions...7 paramsPre-screen a patient's basic eligibility for telehealth prescription services. Checks: age (must be 18+), state (must be where our providers are licensed), BMI (must be 20+), pregnancy status (must not be pregnant, planning pregnancy, or breastfeeding), and medical conditions...
ageintegerbmivaluesexvaluestatestringclient_ipstringconditionsvaluepregnancy_statusvalueintake.questionsGet the full medical intake questionnaire a patient needs to complete before a provider can evaluate them for a prescription. Returns two phases of questions: (1) pre_checkout — screening questions including demographics, pregnancy status, weight/BMI, lifestyle, GLP-1 history,...2 paramsGet the full medical intake questionnaire a patient needs to complete before a provider can evaluate them for a prescription. Returns two phases of questions: (1) pre_checkout — screening questions including demographics, pregnancy status, weight/BMI, lifestyle, GLP-1 history,...
client_ipstringmedicationstringintake.submitSubmit 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 by a licensed US healthcare provider who makes all prescribing decisions. Re...4 paramsSubmit 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 by a licensed US healthcare provider who makes all prescribing decisions. Re...
bearer_tokenstringpatient_namestringpatient_emailstringintake_answersobjectintake.statusCheck 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 provider review completion before proceeding to order placement. Requires authentica...2 paramsCheck 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 provider review completion before proceeding to order placement. Requires authentica...
intake_idstringbearer_tokenstringconsent.listGet 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 informed consent, compounded medication treatment consent, pharmacy authorization, H...2 paramsGet 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 informed consent, compounded medication treatment consent, pharmacy authorization, H...
intake_idstringbearer_tokenstringconsent.textFetch 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 conversation — do not summarize or paraphrase. Includes: consent version number, e...2 paramsFetch 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 conversation — do not summarize or paraphrase. Includes: consent version number, e...
consent_idstringbearer_tokenstringconsent.submitRecord a patient's consent confirmation for a specific consent document. The agent must have already presented the full consent text (from doctormcp_get_consent_text) to the patient and received explicit confirmation. Required parameters: intake_id, consent_id, the patient's e...8 paramsRecord a patient's consent confirmation for a specific consent document. The agent must have already presented the full consent text (from doctormcp_get_consent_text) to the patient and received explicit confirmation. Required parameters: intake_id, consent_id, the patient's e...
intake_idstringtimestampstringconsent_idstringbearer_tokenstringagent_platformstringconsent_methodstringagent_session_idstringpatient_confirmationstringconsent.statusCheck 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 consents are incomplete. Requires authentication.2 paramsCheck 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 consents are incomplete. Requires authentication.
intake_idstringbearer_tokenstringorder.createCreate 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 duration (1, 4, or 6 months), shipping address. The order is reviewed by a l...6 paramsCreate 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 duration (1, 4, or 6 months), shipping address. The order is reviewed by a l...
formstringintake_idstringmedicationstringplan_monthsintegerbearer_tokenstringshipping_addressobjectorder.statusGet the current status of a medication order. Returns status (pending_review, provider_reviewing, approved, needs_info, denied, compounding, shipped, delivered), tracking information, and delivery estimate. Requires authentication.2 paramsGet the current status of a medication order. Returns status (pending_review, provider_reviewing, approved, needs_info, denied, compounding, shipped, delivered), tracking information, and delivery estimate. Requires authentication.
order_idstringbearer_tokenstringorder.documentsGet 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 authentication.2 paramsGet 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 authentication.
order_idstringbearer_tokenstringorder.uploadUpload 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.5 paramsUpload 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.
order_idstringfile_namestringfile_base64stringbearer_tokenstringdocument_typestringcheckout.createInitiate 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 platform supports Stripe Agentic Commerce Protocol, provision a Shared Payment...2 paramsInitiate 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 platform supports Stripe Agentic Commerce Protocol, provision a Shared Payment...
order_idstringbearer_tokenstringcheckout.updateUpdate an existing checkout session. Can modify shipping method, apply promo codes, or update customer details before payment is completed. Requires authentication.3 paramsUpdate an existing checkout session. Can modify shipping method, apply promo codes, or update customer details before payment is completed. Requires authentication.
updatesobjectcheckout_idstringbearer_tokenstringcheckout.completeComplete 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 the `payment_url` from checkout.create instead, then poll checkout.status. Re...3 paramsComplete 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 the `payment_url` from checkout.create instead, then poll checkout.status. Re...
checkout_idstringbearer_tokenstringshared_payment_tokenstringcheckout.statusCheck 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, this tool detects the payment, triggers order fulfillment, and returns the con...2 paramsCheck 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, this tool detects the payment, triggers order fulfillment, and returns the con...
checkout_idstringbearer_tokenstringcheckout.cancelCancel an in-progress checkout session. Releases any held inventory and cancels the associated Stripe PaymentIntent if not yet captured. Requires authentication.2 paramsCancel an in-progress checkout session. Releases any held inventory and cancels the associated Stripe PaymentIntent if not yet captured. Requires authentication.
checkout_idstringbearer_tokenstringportal.log_weightLog a patient's weight for tracking progress on their treatment plan. Requires patient_id, weight in pounds, and date (ISO 8601). Requires authentication.4 paramsLog a patient's weight for tracking progress on their treatment plan. Requires patient_id, weight in pounds, and date (ISO 8601). Requires authentication.
datestringpatient_idstringweight_lbsnumberbearer_tokenstringportal.log_side_effectsLog 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.4 paramsLog 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.
effectsarrayseveritystringpatient_idstringbearer_tokenstringportal.messageSend 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') are flagged for priority response. Requires authentication.3 paramsSend 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') are flagged for priority response. Requires authentication.
messagestringpatient_idstringbearer_tokenstringportal.care_planGet 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. Requires authentication.2 paramsGet 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. Requires authentication.
patient_idstringbearer_tokenstringportal.refillRequest 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.2 paramsRequest 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.
patient_idstringbearer_tokenstringportal.supportContact customer support with a question or issue. Creates a support ticket and returns the ticket ID and estimated response time. Requires authentication.4 paramsContact customer support with a question or issue. Creates a support ticket and returns the ticket ID and estimated response time. Requires authentication.
messagestringsubjectstringpatient_idstringbearer_tokenstringprovider.questionsGet 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 status is 'needs_info', or a message that no questions are pending. Requires auth...2 paramsGet 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 status is 'needs_info', or a message that no questions are pending. Requires auth...
order_idstringbearer_tokenstringprovider.respondSubmit 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.3 paramsSubmit 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.
answersobjectorder_idstringbearer_tokenstringMCP (Model Context Protocol) server for the Chia Health telehealth prescription platform. Enables AI assistants (ChatGPT, Claude, Gemini, OpenClaw, Copilot, and custom agents) to help patients browse medications, complete medical intake, sign consent documents, place orders, pay, and manage their treatment — all through natural conversation.
Available treatments include GLP-1 medications (semaglutide, tirzepatide including tablets), peptide therapies (sermorelin, NAD+, glutathione), and longevity programs. All prescriptions are evaluated by licensed US healthcare providers and delivered from FDA-regulated 503A compounding pharmacies across all 50 US states + DC.
doctormcp is a remote MCP server — connect over the network, no local installation required.
Server URL: https://mcp.chia.health/
Transport: Streamable HTTP
Metadata: https://mcp.chia.health/server.json
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"chia-health": {
"url": "https://mcp.chia.health/"
}
}
}
Add to .cursor/mcp.json in your project or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"chia-health": {
"url": "https://mcp.chia.health/"
}
}
}
Add to your Cline MCP settings:
{
"mcpServers": {
"chia-health": {
"url": "https://mcp.chia.health/"
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"chia-health": {
"serverUrl": "https://mcp.chia.health/"
}
}
}
Any MCP client that supports streamable HTTP transport can connect:
https://mcp.chia.health/https://mcp.chia.health/server.jsonOnce connected, your AI assistant can immediately call these public tools (no auth required):
medications.categories → medication categories
medications.list → all medications with pricing
medications.availability → check if a medication ships to your state
eligibility.check → pre-screen age, state, BMI
| Category | Tools | Auth |
|---|---|---|
| Auth — OTP verification, session management, payment detection | 4 | No* |
| Discovery — browse medications, pricing, availability | 5 | No |
| Qualification — eligibility checks, intake questionnaires | 4 | Partial |
| Consent — present and sign consent documents | 4 | Guest |
| Ordering — place orders, upload ID verification | 4 | Guest |
| Checkout — Stripe ACP payments or authenticated payment links | 5 | Guest |
| Patient Portal — log weight, message provider, refills | 6 | Full |
| Provider — answer follow-up questions from your provider | 2 | Guest |
* Auth tools use session_id (no token) except auth.check_payment which uses a bearer token.
Important: All prescriptions are evaluated and approved by licensed US healthcare providers. doctormcp facilitates the patient workflow — it does not make clinical decisions.
Patients can browse freely without authentication — discovery, eligibility, and intake question preview are all public.
When the patient is ready to proceed with their medical intake, they verify their email:
auth.start(email, phone, name) → sends OTP to email, returns session_idauth.verify_otp(session_id, code) → returns guest-scoped bearer tokenThe guest token enables intake, consent, ordering, and checkout. After payment, auth.check_payment upgrades the token to full scope for portal access (care plan, messaging, refills).
| Tool | Auth | Description |
|---|---|---|
auth.start | No | Send OTP to patient's email, get session_id |
auth.verify_otp | No | Verify code, get guest-scoped bearer token |
auth.resend_otp | No | Resend OTP if expired or not received |
auth.check_payment | Guest | Poll for payment, upgrade token to full scope |
| Tool | Description |
|---|---|
medications.list | List all medications with categories, forms, and pricing |
medications.details | Detailed info for a specific medication (plans, pricing, what's included) |
medications.availability | Check if a medication ships to a given state |
medications.pricing | Price breakdown for a specific medication/form/plan combo |
medications.categories | List medication categories (Weight Loss, Peptides, Anti-Aging, etc.) |
| Tool | Auth | Description |
|---|---|---|
eligibility.check | No | Pre-screen age, state, BMI, and medical conditions |
intake.questions | No | Get the structured intake questionnaire for a medication |
intake.submit | Guest | Submit completed intake for provider review |
intake.status | Guest | Check intake review status (under review, approved, denied) |
| Tool | Description |
|---|---|
consent.list | List all 5 consent documents needed for an intake |
consent.text | Get full verbatim text of a consent document |
consent.submit | Record patient's consent confirmation with audit trail |
consent.status | Check which consents are complete/pending |
| Tool | Description |
|---|---|
order.create | Create a medication order (requires all consents complete) |
order.status | Check order status and tracking info |
order.documents | List required ID documents for an order |
order.upload | Upload photo ID or selfie for identity verification |
| Tool | Description |
|---|---|
checkout.create | Create checkout; returns authenticated payment link (magic-link URL) |
checkout.update | Update a pending checkout (promo codes, shipping) |
checkout.complete | Complete payment with a Stripe Shared Payment Token (ACP path) |
checkout.status | Poll payment status after sending a payment link (fallback path) |
checkout.cancel | Cancel an in-progress checkout |
| Tool | Description |
|---|---|
portal.log_weight | Log weight for progress tracking |
portal.log_side_effects | Report side effects (severe = auto-flagged for provider) |
portal.message | Send a message to the healthcare provider |
portal.care_plan | Get current medication, dosing, and weight progress |
portal.refill | Request a medication refill |
portal.support | Create a customer support ticket |
| Tool | Description |
|---|---|
provider.questions | Get follow-up questions from the provider |
provider.respond | Submit answers to provider questions |
User: "What weight loss medications do you offer?"
Agent calls: medications.list
→ Returns categories with semaglutide, tirzepatide, etc.
Agent calls: medications.details(medication="semaglutide-injectable")
→ Returns plans (1-month $349, 4-month $299/mo, 6-month $249/mo)
Agent calls: medications.availability(medication="semaglutide-injectable", state="TX")
→ { "available": true }
Agent calls: eligibility.check(age=35, state="TX", bmi=31.2)
→ { "eligible": true, "available_medications": [...] }
== VERIFY IDENTITY ==
1. auth.start(email="patient@example.com", phone="5551234567", first_name="Jane")
→ { "session_id": "abc123...", "otp_sent": true }
2. auth.verify_otp(session_id="abc123...", code="847293")
→ { "guest_token": "mcp_...", "scope": "guest" }
== MEDICAL INTAKE ==
3. intake.questions(medication="semaglutide-injectable")
→ Structured questionnaire (demographics, vitals, medical history, etc.)
→ Agent asks patient each question conversationally
4. intake.submit(patient_email, patient_name, answers, bearer_token)
→ { "intake_id": "42", "next_step": "get_required_consents" }
5. consent.list(intake_id="42", bearer_token)
→ 5 consent documents (telehealth, treatment, pharmacy, HIPAA, AI disclosure)
6. For each consent:
a. consent.text(consent_id, bearer_token)
→ Full text the agent MUST present verbatim
b. Patient confirms: "I agree"
c. consent.submit(intake_id, consent_id, "I agree", bearer_token)
== ORDER & PAY ==
7. order.create(intake_id, medication, form, plan_months, shipping_address, bearer_token)
→ { "order_id": "99", "total": "1079.39", "next_step": "create_checkout" }
8. checkout.create(order_id="99", bearer_token)
→ { "checkout_id": "7", "payment_url": "https://chia.health/checkout/aBc-_xyz" }
→ Agent shares link with patient; also sent via email+SMS
9a. (ACP path) checkout.complete(checkout_id="7", shared_payment_token="spt_...", bearer_token)
→ { "payment_status": "success", "confirmation_number": "CHIA-000099" }
9b. (Fallback) Patient opens payment_url in browser, pays on Chia checkout page
10. auth.check_payment(bearer_token)
→ { "paid": true, "scope": "full" } // token upgraded, portal unlocked
1. portal.log_weight(patient_id, weight_lbs=195.5, date="2026-06-15", bearer_token)
→ { "recorded": true }
2. portal.care_plan(patient_id, bearer_token)
→ Current medication, phase, dosing schedule, recent weights
3. portal.log_side_effects(patient_id, effects=["nausea"], severity="mild", bearer_token)
→ { "recorded": true, "flagged_for_review": false }
4. portal.message(patient_id, message="Nausea improving", bearer_token)
→ { "sent": true, "estimated_response_time": "24-48 hours" }
doctormcp uses Stripe's Agentic Commerce Protocol (ACP) for payment processing:
order.create calculates the total and creates a pre-payment order record.checkout.create creates a Stripe PaymentIntent (for ACP) and generates an authenticated payment link. The link auto-authenticates patients in the browser and lands on the Chia Health checkout page. Also sent via email and SMS.checkout.complete accepts a Shared Payment Token (SPT) from the AI platform and confirms the PaymentIntent. Instant, in-conversation payment.payment_url (authenticated magic-link) with the patient. The patient opens it in their browser, auto-authenticates, and pays on the Chia Health checkout page. The agent polls auth.check_payment to detect completion.Subscription and Enrollment are created automatically. auth.check_payment upgrades the agent's token to full scope for portal access.Apache License 2.0 — see LICENSE for details.
Copyright 2026 Chia Health, Inc.
io.github.shelvick/shopify-subscription-reconciliation
zleventer/google-ads-mcp
csoai-org/meok-stripe-acp-checkout-mcp
io.github.mharnett/google-ads
csoai-org/stripe-billing-mcp
co.pipeboard/google-ads-mcp