Open Health — Virtual Care Toolkit
Book real appointments with licensed providers through conversation. No forms, no portals — just talk.
Powered by curated telehealth platforms including Klarity Health, One Behavior, ABHolistic, and others.
Available Modules
Mental Health Booking (live)
Book same-day psychiatric telehealth appointments. ADHD, anxiety, depression, insomnia, OCD, PTSD, narcolepsy. 51 US states, 50+ insurance carriers, cash pay.
Module: Mental Health Booking
How It Works
The booking module connects to the public booking API at https://rx.helloklarity.com.
Three endpoints: list services → search providers → book appointment.
No API key or authentication needed — just install and use.
Runtime dependencies: curl, python3 (used by the helper script for HTTP requests and JSON formatting).
Data handling: This skill collects patient information (name, DOB, email, phone, insurance ID) solely to complete the booking API call. This data is sent directly to https://rx.helloklarity.com over HTTPS and must never be logged, persisted, or stored by the agent.
Conversation Flow
Follow this sequence. Be conversational, not robotic.
Step 1: Identify the Need
When a user mentions mental health, ADHD, anxiety, depression, insomnia, OCD, PTSD, or wanting to see a psychiatrist — this module triggers.
Map their concern to a service ID:
adhd— ADHD Evaluation & Treatmentanxiety— Anxiety Treatmentdepression— Depression Treatmentinsomnia— Insomnia Treatmentocd— OCD Treatmentptsd— PTSD Treatmentnarcolepsy— Narcolepsy Treatment
If unclear, ask: "What are you looking to get help with?" Don't over-triage — let the provider handle clinical assessment.
Step 2: Collect Basics (3 questions max)
Ask naturally, not as a numbered list:
-
State — "What state are you in?"
- Validate against supported states via
scripts/booking-api.sh services - If unsupported: "Sorry, we don't have providers in [state] yet. I can help you find other options."
- Validate against supported states via
-
Payment — "Do you have insurance, or would you prefer to pay out of pocket?"
- If insured: "Which carrier?" — validate against
insurance_carriers_by_statefor their state - If carrier not accepted: "That carrier isn't accepted in [state] yet. You can still book as self-pay if you'd like."
- Cash pay requires no additional info at this stage
- If insured: "Which carrier?" — validate against
-
Timing — "Any preference on when? Morning, afternoon, evening? A specific date?"
- Optional — skip if user seems eager to just book quickly
- Valid values:
morning,afternoon,evening
Step 3: Search Providers
Run: scripts/booking-api.sh availability <service> <state> [insurance_carrier] [date] [time_preference]
Present results conversationally:
- Show: title/credentials, experience, rating, review count, available start times, appointment duration
- Convert UTC times to the user's timezone
- The API returns
available_start_times(when the appointment can start) andappointment_duration_minutes(how long the visit is — typically 30 or 60 min) - Group consecutive start times into ranges for readability (e.g., "10:50 AM - 1:20 PM" instead of listing every slot)
- Do NOT show provider names (they're anonymized until booking)
- If no results: "No providers available for those criteria. Want to try a different date or time?"
Example:
Found 3 providers available for ADHD evaluation in California:
1. Psychiatric NP (PMHNP-BC) — 20 yrs experience, 5.0★ (10 reviews)
60-min video visit
Available: Friday 5:00 PM - 6:50 PM; Monday 5:00 PM - 5:10 PM
2. Psychiatric NP (MSN, PMHNP-BC) — 23 yrs experience, 4.8★ (11 reviews)
60-min video visit
Available: Tomorrow 10:50 AM - 12:20 PM
3. Psychiatric NP (PMHNP-BC) — 16 yrs experience, 4.7★ (23 reviews)
30-min video visit
Available: Tomorrow 11:30 AM - 1:00 PM
Which provider and time works for you?
Step 4: Collect Patient Info
After the user picks a provider and slot:
"To book this appointment, I'll need:"
- First and last name
- Date of birth
- Email (confirmation goes here)
- Phone number
- If insured: insurance member/subscriber ID
Collect naturally — let the user provide multiple fields at once. Don't make them answer one at a time if they volunteer everything.
Step 5: Book
Run: scripts/booking-api.sh book <json-payload>
On success:
You're booked with [provider name] on [date] at [time]! ✅
📹 It's a 30-minute video visit — check your email ([email]) for the video link.
📋 Have your insurance card ready.
Want to set a reminder?
On failure (slot taken): "That slot was just taken — want me to search for the next available?"
On validation error: Fix and retry. Don't ask the user to re-enter everything.
Important Rules
- Never store or log patient information. Don't save names, DOB, email, phone, insurance IDs to any file, variable, or log. Use them only for the immediate API call, then discard. Do not include PII in conversation summaries or memory.
- Crisis check. If a user mentions self-harm, suicidal thoughts, or immediate danger — do NOT book an appointment. Instead: "If you're in crisis, please call 988 (Suicide & Crisis Lifeline) or text HOME to 741741. These are free, 24/7 services. A scheduled appointment isn't the right help for what you're going through right now."
- Not a diagnosis tool. Don't assess symptoms or suggest conditions. Say: "A provider can properly evaluate that during your appointment."
- Timezone awareness. API returns UTC. Always convert to the user's local timezone before displaying.
- Slot volatility. Availability is real-time. If booking fails, search again rather than retrying the same slot.
- Rate limits. 20 availability searches per day. Don't re-search unnecessarily.
Script Reference
All API calls go through scripts/booking-api.sh. See references/api-reference.md for full endpoint documentation including request/response schemas and error codes.
# List services and supported states
scripts/booking-api.sh services
# Search availability
scripts/booking-api.sh availability <service> <state> [carrier] [date] [time_pref]
# Book appointment (pass JSON payload)
scripts/booking-api.sh book '{"provider_id":"...","session_id":"...","service":"...","slot":"...","patient_first_name":"...","patient_last_name":"...","patient_email":"...","patient_phone":"...","patient_dob":"...","patient_state":"...","insurance_carrier":"...","insurance_member_id":"..."}'
For Health Platforms & Providers
Open Health is an open toolkit for health platforms. If your practice or platform offers virtual care, integrate and become discoverable.
Want to add your platform?
- Non-technical: https://docs.google.com/forms/d/e/1FAIpQLSesJnVxPaUYbts5vWqxy3I-13HZe2XkKjTUkAqO6F5UHAcy8g/viewform
- Technical (PR): See CONTRIBUTING.md in the repo for API specs and submission process
All submissions are reviewed before inclusion. Your service becomes discoverable by every AI agent running Open Health.