Chia Health Mcp

by chia-health

365 downloads
Not rated
GitHub

Description

Chia Health MCP Server — Patient workflow integration for a licensed US telehealth platform. Browse GLP-1 medications (semaglutide, tirzepatide), peptide therapies (sermorelin, NAD+, glutathione), and longevity treatments. Check eligibility, complete intake, sign consents, and…

About

Chia Health MCP Server — Patient workflow integration for a licensed US telehealth platform. Browse GLP-1 medications (semaglutide, tirzepatide), peptide therapies (sermorelin, NAD+, glutathione), and longevity treatments. Check eligibility, complete intake, sign consents, and manage treatment plans. 30 tools…

Details

Author
chia-health
Downloads
365
Categories
Other, Developer Tools

- 30 tools across Discovery, Qualification, Consent, Ordering, Checkout, Patient Portal, and Provider categories.
- Public discovery tools require no authentication; patient-specific tools require a bearer token.
- HIPAA compliant: audit logging, immutable consent records, input sanitization, bearer token auth, and rate limiting.
- Stripe ACP integration with both in‑conversation payment (Shared Payment Token) and fallback payment URL.
- Full ordering flow: intake questionnaire, consent documents, order creation, checkout, and payment.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Chia Health Mcp
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Chia Health MCP is a remote server with Streamable HTTP transport — no local installation required. Configure your MCP client to connect to the server URL https://mcp.chia.health/. Configuration examples are provided for Claude Desktop, Cursor, Cline/VS Code, and Windsurf. After connecting, the AI assistant can call tools such as doctormcp_list_medications, doctormcp_check_availability, and doctormcp_get_intake_questions immediately (public tools) or after obtaining a bearer token (patient-specific tools).

auth_start

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_otp to prove email ownership and get a bearer token. The code is in the email subject line: 'Chia Health: Your code is XXXXXX'. If you have access to the patient's email (e.g. Gmail MCP), search for this subject. No authentication required. Call this when the patient is ready to proceed with their medical intake — after browsing medications and checking eligibility.

auth_verify_otp

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 checkout and payment, call auth_check_payment to upgrade the token to full scope for portal access.

auth_resend_otp

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.

auth_check_payment

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, the token is automatically upgraded to full scope, unlocking portal tools (care plan, refills, messaging, weight logs, etc.). Requires the guest token from auth_verify_otp as bearer_token.

medications_list

List 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 compounded wellness treatments. Returns medication names, categories, available forms (injectable, oral tablet, sublingual drops, nasal spray), and starting prices. All medications are compounded by US-licensed 503A pharmacies and require evaluation by a licensed US healthcare provider before prescribing.

medications_details

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, sublingual drops), all active plan options with pricing for each, what's included (provider consultation, medication, shipping, ongoing support), contraindications, and common side effects. Supports queries by medication name (e.g. 'semaglutide', 'tirzepatide', 'sermorelin', 'NAD+', 'glutathione') or by category (e.g. 'weight loss', 'peptides', 'anti-aging'). Use this to look up exact plan durations and pricing.

medications_availability

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 and reason if unavailable.

medications_pricing

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 plans. Plan durations vary by medication — use medications_details first to see available plan_months values. Supports semaglutide, tirzepatide, sermorelin, NAD+, glutathione and all other available medications.

medications_categories

List 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 and count of available medications.

eligibility_check

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), biological sex, pregnancy status, and diagnosed conditions. Only pass parameters that apply to this patient. `pregnancy_status` applies ONLY when biological sex is female — omit it entirely for males. Don't invent values to satisfy the schema; if you don't know, leave the parameter out and the server will return what is or isn't checkable. If you already know the patient's age, sex, state, height/weight from prior conversation context, you may pre-fill — but read the values back to the patient and get explicit confirmation before calling this tool. Returns eligibility status, available medications, and any disqualifying reasons (MTC/MEN2 history, pregnancy, out-of-coverage state, etc.).

intake_questions

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; NAD+ and other longevity peptides return energy/sleep/stress/cognitive/delivery-method questions instead. If the patient wants more than one medication, pass the additional slugs in `additional_medications` — the server returns the UNION of section sets deduped by section key, so you ask each shared question exactly once. ## How to present this to the patient 1. PROGRESSIVE DISCLOSURE: walk through ONE section at a time. Wait for the patient's reply before moving to the next section. Do not paste the whole questionnaire in a single message. 2. HONOR CONDITIONALS: each section and each question may carry a `conditional_on` predicate (e.g. `{sex_assigned_at_birth: Female}` on the Pregnancy section). SKIP any section/question whose predicate isn't satisfied. Don't ask males about pregnancy or perimenopause. 3. QUIZ FORMAT: present every `select` / `multi_select` question as a short pick-list using the `options` array verbatim. The patient should be able to reply with a single choice, not a sentence. Reserve free text for `*_details` follow-ups. 4. EASY FIRST: order sections from low-friction (goals, lifestyle, preferences) to high-friction (clinical history, MTC/MEN2, prior therapies). The provider sees all answers regardless of order asked. 5. USE-AND-VERIFY: if you know answers from prior conversation context, pre-fill them in your draft, but read them back to the patient and get explicit OK before calling `intake_submit`. Never silently submit assumed values. Returns two phases: (1) pre_checkout — eligibility / screening questions, collected and submitted BEFORE payment; (2) post_checkout — detailed clinical history, collected and submitted AFTER payment. Do not submit post_checkout answers before the patient has paid. A licensed US healthcare provider reviews both phases and makes all prescribing decisions.

intake_submit

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 by a licensed US healthcare provider who makes all prescribing decisions. Requires authentication.

intake_status

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 provider review completion before proceeding to order placement. Requires authentication.

consent_list

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 informed consent, compounded medication treatment consent, pharmacy authorization, HIPAA notice of privacy practices, and AI-assisted intake disclosure. Each consent must be fetched individually via consent_text and confirmed by the patient before proceeding. Requires authentication.

consent_text

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 conversation — do not summarize or paraphrase. Includes: consent version number, effective date, section headings and body text, a confirmation prompt the patient should agree to, and withdrawal instructions. Available consent types: telehealth informed consent, compounded medication treatment consent, pharmacy authorization, HIPAA notice of privacy practices, and AI-assisted intake disclosure. The patient must explicitly confirm each consent before the agent can call consent_submit. Requires authentication.

consent_submit

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 confirmation. Required parameters: intake_id, consent_id, the patient's exact confirmation text (e.g. 'I agree'), consent method ('ai_agent_conversational'), the AI platform name ('chatgpt', 'claude', 'gemini'), and a session/conversation ID for audit trail. Returns a consent record with timestamp, audit trail details, and the list of remaining consents still needed. All consent records are retained for 10 years per HIPAA requirements. Requires authentication.

consent_status

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 consents are incomplete. Requires authentication.

order_create

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 duration (1, 4, or 6 months), shipping address. The order is reviewed by a licensed US healthcare provider who makes the final prescribing decision. If approved, medication is compounded at a US-licensed 503A pharmacy and shipped directly to the patient. Returns order ID, estimated provider review time, and expected delivery window. Payment is processed via Stripe Agentic Commerce Protocol (ACP). Requires authentication.

order_status

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 estimate. Requires authentication.

order_documents

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 authentication.

order_upload

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.

checkout_create

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 platform supports Stripe Agentic Commerce Protocol, provision a Shared Payment Token (SPT) and call checkout_complete to pay instantly. 2. **Payment link (fallback)**: If ACP/SPT is not available, present the returned `payment_url` to the patient. This is a Stripe-hosted checkout page where the patient can enter their card and pay directly. After sending the link, call checkout_status to poll for payment completion. Requires authentication.

checkout_update

Update an existing checkout session. Can modify shipping method, apply promo codes, or update customer details before payment is completed. Requires authentication.

checkout_complete

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 the `payment_url` from checkout_create instead, then poll checkout_status. Requires authentication.

checkout_status

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, this tool detects the payment, triggers order fulfillment, and returns the confirmation. Poll every 5-10 seconds while waiting. Requires authentication.

checkout_cancel

Cancel an in-progress checkout session. Releases any held inventory and cancels the associated Stripe PaymentIntent if not yet captured. Requires authentication.

portal_log_weight

Log a patient's weight for tracking progress on their treatment plan. Requires patient_id, weight in pounds, and date (ISO 8601). Requires authentication.

portal_log_side_effects

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.

portal_message

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') are flagged for priority response. Requires authentication.

portal_care_plan

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. Requires authentication.

portal_refill

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.

portal_support

Contact customer support with a question or issue. Creates a support ticket and returns the ticket ID and estimated response time. Requires authentication.

provider_questions

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 status is 'needs_info', or a message that no questions are pending. Requires authentication.

provider_respond

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.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "chia health mcp": {
            "chia-health": {
                "url": "https://mcp.chia.health/"
            }
        }
    }
}

McpServers

{
    "chia-health": {
        "url": "https://mcp.chia.health/"
    }
}

Chia Health MCP Server

License
MCP
HIPAA
Tools
Stripe ACP

MCP (Model Context Protocol) server for the Chia Health telehealth prescription platform. Enables AI assistants (ChatGPT, Claude, Gemini, Copilot, and custom agents) to help patients browse medications, complete medical intake, sign consent documents, place orders, pay via Stripe ACP, 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.

Getting Started

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

<details>
<summary><strong>Claude Desktop</strong></summary>

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "chia-health": {
      "url": "https://mcp.chia.health/"
    }
  }
}

</details>

<details>
<summary><strong>Cursor</strong></summary>

Add to .cursor/mcp.json in your project or ~/.cursor/mcp.json globally:

{
  "mcpServers": {
    "chia-health": {
      "url": "https://mcp.chia.health/"
    }
  }
}

</details>

<details>
<summary><strong>Cline / VS Code</strong></summary>

Add to your Cline MCP settings:

{
  "mcpServers": {
    "chia-health": {
      "url": "https://mcp.chia.health/"
    }
  }
}

</details>

<details>
<summary><strong>Windsurf</strong></summary>

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "chia-health": {
      "serverUrl": "https://mcp.chia.health/"
    }
  }
}

</details>

<details>
<summary><strong>Other MCP Clients</strong></summary>

Any MCP client that supports streamable HTTP transport can connect:

- Server URL: https://mcp.chia.health/
- Transport: Streamable HTTP
- Server metadata: https://mcp.chia.health/server.json

</details>

Verify Connection

Once connected, your AI assistant can immediately call these public tools (no auth required):

doctormcp_list_categories     → medication categories
doctormcp_list_medications    → all medications with pricing
doctormcp_check_availability  → check if a medication ships to your state

What Can Your AI Assistant Do?

| Category | Tools | Auth |
|----------|-------|------|
| Discovery — browse medications, pricing, availability | 5 | No |
| Qualification — eligibility checks, intake questionnaires | 4 | Partial |
| Consent — present and sign consent documents | 4 | Yes |
| Ordering — place orders, upload ID verification | 4 | Yes |
| Checkout — Stripe ACP payments or payment links | 5 | Yes |
| Patient Portal — log weight, message provider, refills | 6 | Yes |
| Provider — answer follow-up questions from your provider | 2 | Yes |

> Important: All prescriptions are evaluated and approved by licensed US healthcare providers. doctormcp facilitates the patient workflow — it does not make clinical decisions.

Authentication

Discovery tools are public. Patient-specific tools require a bearer token issued during the intake flow. See the Tool Catalog for per-tool auth requirements.

Tool Catalog

Discovery (public, no auth)

| Tool | Description |
|---|---|
| doctormcp_list_medications | List all medications with categories, forms, and pricing |
| doctormcp_get_medication_details | Detailed info for a specific medication (plans, pricing, what's included) |
| doctormcp_check_availability | Check if a medication ships to a given state |
| doctormcp_get_pricing | Price breakdown for a specific medication/form/plan combo |
| doctormcp_list_categories | List medication categories (Weight Loss, Peptides, Anti-Aging, etc.) |

Qualification (public + auth)

| Tool | Auth | Description |
|---|---|---|
| doctormcp_check_eligibility | No | Pre-screen age, state, BMI, and medical conditions |
| doctormcp_get_intake_questions | No | Get the structured intake questionnaire for a medication |
| doctormcp_submit_intake | Yes | Submit completed intake for provider review |
| doctormcp_get_intake_status | Yes | Check intake review status (under review, approved, denied) |

Consent (auth required)

| Tool | Description |
|---|---|
| doctormcp_get_required_consents | List all 5 consent documents needed for an intake |
| doctormcp_get_consent_text | Get full verbatim text of a consent document |
| doctormcp_submit_consent | Record patient's consent confirmation with audit trail |
| doctormcp_get_consent_status | Check which consents are complete/pending |

Ordering (auth required)

| Tool | Description |
|---|---|
| doctormcp_create_order | Create a medication order (requires all consents complete) |
| doctormcp_get_order_status | Check order status and tracking info |
| doctormcp_get_required_documents | List required ID documents for an order |
| doctormcp_upload_document | Upload photo ID or selfie for identity verification |

Checkout / Stripe ACP (auth required)

| Tool | Description |
|---|---|
| doctormcp_create_checkout | Create checkout session; returns ACP details + fallback payment_url |
| doctormcp_update_checkout | Update a pending checkout (promo codes, shipping) |
| doctormcp_complete_checkout | Complete payment with a Stripe Shared Payment Token (ACP path) |
| doctormcp_get_checkout_status | Poll payment status after sending a payment link (fallback path) |
| doctormcp_cancel_checkout | Cancel an in-progress checkout |

Patient Portal (auth required)

| Tool | Description |
|---|---|
| doctormcp_log_weight | Log weight for progress tracking |
| doctormcp_log_side_effects | Report side effects (severe = auto-flagged for provider) |
| doctormcp_message_provider | Send a message to the healthcare provider |
| doctormcp_get_care_plan | Get current medication, dosing, and weight progress |
| doctormcp_request_refill | Request a medication refill |
| doctormcp_contact_support | Create a customer support ticket |

Provider (auth required)

| Tool | Description |
|---|---|
| doctormcp_get_provider_questions | Get follow-up questions from the provider |
| doctormcp_submit_provider_response | Submit answers to provider questions |

Example Agent Flows

1. Discovery Flow (browse medications)

User: "What weight loss medications do you offer?"

Agent calls: doctormcp_list_medications
→ Returns categories with semaglutide, tirzepatide, etc.

Agent calls: doctormcp_get_medication_details(medication="semaglutide")
→ Returns plans (1-month $349, 4-month $299/mo, 6-month $249/mo)

Agent calls: doctormcp_check_availability(medication="semaglutide", state="TX")
→ { "available": true }

Agent calls: doctormcp_check_eligibility(age=35, state="TX", bmi=31.2)
→ { "eligible": true, "available_medications": [...] }

2. Full Ordering Flow (intake → consent → order → checkout → payment)

1. doctormcp_get_intake_questions(medication="semaglutide")
   → Structured questionnaire (demographics, vitals, medical history, etc.)

2. doctormcp_submit_intake(patient_email, patient_name, answers, bearer_token)
→ { "intake_id": "42", "next_step": "get_required_consents" }

3. doctormcp_get_required_consents(intake_id="42", bearer_token)
→ 5 consent documents (telehealth, treatment, pharmacy, HIPAA, AI disclosure)

4. For each consent:
a. doctormcp_get_consent_text(consent_id, bearer_token)
→ Full text the agent MUST present verbatim
b. Patient confirms: "I agree"
c. doctormcp_submit_consent(intake_id, consent_id, "I agree", bearer_token)

5. doctormcp_create_order(intake_id, medication, form, plan_months, shipping_address, bearer_token)
→ { "order_id": "99", "total": "1096.00", "next_step": "create_checkout" }

6. doctormcp_create_checkout(order_id="99", bearer_token)
→ { "checkout_id": "7", "total": "$1,096.00", "payment_url": "https://checkout.stripe.com/..." }

7a. (ACP path) doctormcp_complete_checkout(checkout_id="7", shared_payment_token="spt_...", bearer_token)
→ { "payment_status": "success", "confirmation_number": "CHIA-000099" }

7b. (Fallback) Present payment_url to patient, then poll:
doctormcp_get_checkout_status(checkout_id="7", bearer_token)
→ { "payment_status": "paid", "confirmation_number": "CHIA-000099" }

3. Patient Portal Flow (log weight, check care plan)

1. doctormcp_log_weight(patient_id, weight_lbs=195.5, date="2026-06-15", bearer_token)
   → { "recorded": true }

2. doctormcp_get_care_plan(patient_id, bearer_token)
→ Current medication, phase, dosing schedule, recent weights

3. doctormcp_log_side_effects(patient_id, effects=["nausea"], severity="mild", bearer_token)
→ { "recorded": true, "flagged_for_review": false }

4. doctormcp_message_provider(patient_id, message="Nausea improving", bearer_token)
→ { "sent": true, "estimated_response_time": "24-48 hours" }

Stripe ACP Integration

doctormcp uses Stripe's Agentic Commerce Protocol (ACP) for payment processing:

1. Order Creationcreate_order calculates the total and creates a pre-payment order record.
2. Checkout Initiationcreate_checkout creates a Stripe PaymentIntent (for ACP) and a Stripe Checkout Session (for fallback). Returns line items, totals, and a payment_url.
3. Payment Completion — Two paths:
- ACP: complete_checkout accepts a Shared Payment Token (SPT) from the AI platform and confirms the PaymentIntent. Instant, in-conversation payment.
- Fallback: The agent presents the payment_url (Stripe-hosted checkout page) to the patient. After the patient pays in their browser, the agent calls get_checkout_status which detects the payment and triggers fulfillment.
4. Post-Payment — On success (either path), a Subscription and Enrollment are created automatically, triggering the pharmacy fulfillment pipeline.

Checkout sessions expire after 30 minutes and can be canceled at any time before completion.

HIPAA Compliance

- Audit Logging — Every access to protected health information (PHI) is logged with actor identity, action type, resource, IP address, and timestamp. Logs are retained for 10 years.
- Consent Records — All patient consent confirmations include verbatim confirmation text, method (AI agent conversational), platform, session ID, and IP address. Consent records are immutable.
- Input Sanitization — All inputs are validated and sanitized. Control characters are stripped, lengths enforced, and domain-specific formats (email, state, phone, ZIP) are validated.
- Bearer Token Auth — Patient-scoped API tokens with SHA-256 hashing. Tokens expire after a configurable TTL. Deactivated and expired tokens are rejected.
- Rate Limiting — Redis-backed token-bucket rate limiting per user and endpoint category (public: 100/min, authenticated: 30/min, consent: 10/min, checkout: 5/min).
- Minimal Data Exposure — Tools return only the data needed for the current step. Sensitive fields (payment details, full SSN) are never returned.

Support

- Issues: github.com/chia-health/chia-mcp/issues
- Website: chia.health
- Email: engineering@chia.health

License

Apache License 2.0 — see LICENSE for details.

Copyright 2026 Chia Health, Inc.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.