Skip to content

Chia Health MCP Server

by chia.health · remote · no sign-in to list tools · v1.0.0 · published by health.chia

Licensed US telehealth — GLP-1 medications, intake, consents, Stripe ACP. HIPAA-compliant, 30 tools.

Deletes · 17Final · 1Changes · 3

34 tools: 17 can delete or cancel things, 1 do something that can't be undone, 3 change things and 13 only read.

Scanned Oct 21, 2026

5 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http chia https://mcp.chia.health/

Findings

Matches of fixed checks, with the text they matched.

4 warn1 info
  • The server marks "auth_check_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true}; The name "auth_check_payment" says "payment": a word that usually means money moves, which cannot be taken back.

    What this check looks for
  • The server marks "checkout_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "checkout_status" says "checkout": a word for a change.

    What this check looks for
  • The server marks "portal_log_weight" destructive (destructiveHint: true), and its name says "log", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}; The name "portal_log_weight" says "log": a word for reading.

    What this check looks for
  • The server marks "portal_log_side_effects" destructive (destructiveHint: true), and its name says "log", a word for reading.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}; The name "portal_log_side_effects" says "log": a word for reading.

    What this check looks for
  • The description is 2,041 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...d US healthcare provider reviews both phases and makes all prescribing decisions."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

34 tools

Deletes or cancels 17Claude Code: deny
  • auth_resend_otpResend the verification code to the patient's email.No findings

    Why it is in this group

    • The name "auth_resend_otp" says "resend": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • auth_startStart a patient session by providing their contact information.No findings

    Why it is in this group

    • The name "auth_start" says "start": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • auth_verify_otpVerify the 6-digit code sent to the patient's email.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • checkout_cancelCancel an in-progress checkout session.No findings

    Why it is in this group

    • The name "checkout_cancel" says "checkout": a word for a change.
    • The description's first verb is "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel an in-progress checkout session. Releases any held inventory and cancels the associated Stripe PaymentIntent if not yet captured. Requires authentication.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • checkout_completeComplete payment using Stripe ACP (Shared Payment Token).No findings

    Why it is in this group

    • The name "checkout_complete" says "checkout": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • checkout_createInitiate a checkout session for a medication order.No findings

    Why it is in this group

    • The name "checkout_create" says "checkout": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • checkout_updateUpdate an existing checkout session.No findings

    Why it is in this group

    • The name "checkout_update" says "checkout": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Update an existing checkout session. Can modify shipping method, apply promo codes, or update customer details before payment is completed. Requires authentication.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • intake_submitSubmit a completed medical intake questionnaire for provider review.No findings

    Why it is in this group

    • The name "intake_submit" says "submit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • order_createCreate a new prescription medication order.No findings

    Why it is in this group

    • The name "order_create" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • order_uploadUpload a verification document for a medication order.No findings

    Why it is in this group

    • The name "order_upload" says "upload": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
  • portal_log_side_effectsLog side effects a patient is experiencing.1 finding

    Why it is in this group

    • The name "portal_log_side_effects" says "log": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "portal_log_side_effects" destructive (destructiveHint: true), and its name says "log", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}; The name "portal_log_side_effects" says "log": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • portal_log_weightLog a patient's weight for tracking progress on their treatment plan.1 finding

    Why it is in this group

    • The name "portal_log_weight" says "log": a word for reading.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Warn

      The server marks "portal_log_weight" destructive (destructiveHint: true), and its name says "log", a word for reading.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false}; The name "portal_log_weight" says "log": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Log a patient's weight for tracking progress on their treatment plan. Requires patient_id, weight in pounds, and date (ISO 8601). Requires authentication.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • portal_messageSend a message to the patient's healthcare provider.No findings

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • portal_refillRequest a medication refill for the patient's current prescription.No findings

    Why it is in this group

    • The description's first verb is "request": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • portal_supportContact customer support with a question or issue.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Contact customer support with a question or issue. Creates a support ticket and returns the ticket ID and estimated response time. Requires authentication.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
  • provider_respondSubmit answers to provider follow-up questions for a specific order.No findings

    Why it is in this group

    • The description's first verb is "submit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
Can't be undone 1Claude Code: ask
  • auth_check_paymentCheck if the patient has completed payment and upgrade the token to full scope.1 finding

    Why it is in this group

    • The name "auth_check_payment" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "auth_check_payment" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true}; The name "auth_check_payment" says "payment": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
Changes things 3Claude Code: ask
  • checkout_statusCheck the payment status of a checkout session.1 finding

    Why it is in this group

    • The name "checkout_status" says "checkout": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "checkout_status" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "checkout_status" says "checkout": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
  • eligibility_checkPre-screen a patient's basic eligibility for telehealth prescription services.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • medications_availabilityCheck if a specific medication is available for shipping to the patient's state.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
Only reads 13Claude Code: allow
  • intake_questionsGet the medical intake questionnaire for the chosen medication(s).1 finding

    Why it is in this group

    • The description's first verb is "get": a word for reading.

    Findings

    • Info

      The description is 2,041 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...d US healthcare provider reviews both phases and makes all prescribing decisions."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • intake_statusCheck the current status of a previously submitted intake questionnaire.No findings

    Why it is in this group

    • The name "intake_status" says "status": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
  • medications_categoriesList all medication categories available through the telehealth platform: Weight Loss (GLP-1 medications), Peptide Therapy (sermorelin, growth hormone peptides), Anti-Aging & Longe…No findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • medications_detailsGet detailed information about a specific medication including: all available dosage strengths and titration schedules, available forms (injectable vials, pre-filled syringes, oral…No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • medications_listList all available prescription medications including GLP-1 weight loss drugs (compounded semaglutide, compounded tirzepatide), peptide therapies (sermorelin for growth hormone sup…No findings

    Why it is in this group

    • The name "medications_list" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • medications_pricingGet detailed pricing for a specific medication, form, and plan duration.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • order_documentsGet the list of documents a patient needs to upload for their order.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
  • order_statusGet the current status of a medication order.No findings

    Why it is in this group

    • The name "order_status" says "status": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
  • portal_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 p…No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
  • provider_questionsGet follow-up questions from the healthcare provider for a specific order.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http chia https://mcp.chia.health/

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__chia__medications_list",
      "mcp__chia__medications_details",
      "mcp__chia__medications_pricing",
      "mcp__chia__medications_categories",
      "mcp__chia__intake_questions",
      "mcp__chia__intake_status",
      "mcp__chia__consent_list",
      "mcp__chia__consent_text",
      "mcp__chia__consent_status",
      "mcp__chia__order_status",
      "mcp__chia__order_documents",
      "mcp__chia__portal_care_plan",
      "mcp__chia__provider_questions"
    ],
    "ask": [
      "mcp__chia__auth_check_payment",
      "mcp__chia__medications_availability",
      "mcp__chia__eligibility_check",
      "mcp__chia__checkout_status"
    ],
    "deny": [
      "mcp__chia__auth_start",
      "mcp__chia__auth_verify_otp",
      "mcp__chia__auth_resend_otp",
      "mcp__chia__intake_submit",
      "mcp__chia__consent_submit",
      "mcp__chia__order_create",
      "mcp__chia__order_upload",
      "mcp__chia__checkout_create",
      "mcp__chia__checkout_update",
      "mcp__chia__checkout_complete",
      "mcp__chia__checkout_cancel",
      "mcp__chia__portal_log_weight",
      "mcp__chia__portal_log_side_effects",
      "mcp__chia__portal_message",
      "mcp__chia__portal_refill",
      "mcp__chia__portal_support",
      "mcp__chia__provider_respond"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as chia. Review it before you use it.