Skip to content

About

No description, website, or topics provided.

Resources

Stars

71 stars

Watchers

4 watching

Forks

Latest commit

 

History

649 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenRecord

Homepage · Download the Claude Desktop extension

Let AI manage your healthcare. Ask Claude to request a prescription refill, message your doctor to schedule an appointment, review your latest lab results, or update your insurance information — all through a natural conversation. OpenRecord connects to Epic MyChart patient portals and exposes 50+ tools for reading and managing your health data, with full write support — send messages, request refills, and update your insurance information, not just view it.

OpenRecord ships as three clients, all built on the same scraper core:

  1. Claude Desktop extension (claude-desktop-extension/) — a .mcpb bundle that runs entirely on your machine. Install it, say "Set up my MyChart", and Claude handles the rest.
  2. Mobile app (expo-app/) — an Expo/React Native iOS app with an on-device agent, skills, and alerts.
  3. CLI + npm package (npm-package/) — the mychart-cli npm package: a headless CLI for scripting and testing, plus an importable library.

Documentation

Using OpenRecord

Doc For
Claude Desktop extension Install, setup, tools, privacy, development
Mobile app What the app does, AI providers, building and running it
mychart-cli overview Install, quick starts for the CLI and the library
CLI reference Every flag, sign-in, output, family records, files, exit codes
Library API reference MyChartClient, every method and type, errors, imaging, raw scrapers, the capability registry
Capabilities Every action across all clients, with arguments, output modes and id chaining
Authentication Passkeys, TOTP, 2FA codes, sessions, family records
Recipes Export a chart, clinical notes, imaging, messaging, unattended runs, AI agents
Troubleshooting Sign-in failures, refused reads, empty categories
Privacy policy What stays on your device and what leaves it

Working on OpenRecord

Doc For
Architecture The invariants every change must keep, with the reasoning
Testing Unit / integration / real-MyChart suites, CI, the coverage gate
Scrapers Map of every scraper; each folder's README documents its endpoints and quirks
Scraping guide Finding the request MyChart's web UI sends, and the traps
Processor layer raw / standard / concise / json and each capability's field contract
fake-mychart The MyChart stand-in used for development and every integration test
CLI contributor notes Running the CLI from a checkout, where things live, passkey sign counts
iOS simulator Driving the simulator, maestro-cli, testID rules
Infrastructure AWS, deployments, the splash site and demo, lambdas, secrets
Splash site and demo, demo The website and in-browser demo
Browser password import Reading saved MyChart logins from Chromium and Firefox

What It Does

Connects to any Epic MyChart patient portal and exposes 35+ tools for reading and managing your health data:

  • Profile — name, DOB, MRN, PCP, email
  • Medications — current meds, dosages, refill details, pharmacy info
  • Lab Results — test results, reference ranges, trending
  • Imaging — X-ray, MRI, CT, ultrasound results
  • Allergies — known allergies with severity and reactions
  • Health Issues — active diagnoses and conditions
  • Vitals — weight, blood pressure, height, BMI
  • Immunizations — vaccine records and dates
  • Visits — upcoming appointments and past visit history
  • Messages — read, send, and reply to provider messages
  • Billing — billing history and account balances
  • Care Team — providers, specialists, departments
  • Insurance — coverage details and plan info
  • Preventive Care — overdue screenings and recommendations
  • Referrals — active and past referrals
  • Medical History — past conditions, surgical, family, and social history
  • Letters — after-visit summaries and clinical letters
  • Documents — clinical documents and visit records
  • And more — emergency contacts, goals, care journeys, questionnaires, education materials, EHI export, linked accounts, medication refill requests

How It Works

OpenRecord logs in with your credentials, handles 2FA automatically (via TOTP authenticator codes or passkeys), and interacts with MyChart's APIs on your behalf. No FHIR, no OAuth, no Epic developer account needed — just your MyChart username, password, and optionally a TOTP secret for automatic 2FA.

Sessions are kept alive automatically and re-established on expiry. Credentials never leave your machine — every client runs the scrapers locally.

Getting Started

1. Claude Desktop extension

Download openrecord.mcpb, or build it from a checkout:

cd claude-desktop-extension
bun install
bun run pack          # builds dist/server.cjs and produces openrecord.mcpb

Then double-click openrecord.mcpb (or drag it into Claude Desktop → Settings → Extensions), open a new chat, and say "Set up my MyChart". Claude walks you through picking your health system, signing in, and 2FA. Credentials are stored locally in ~/.openrecord-mcpb/ and are never sent to Anthropic.

Want to try it without real credentials? Search for Springfield General Hospital (test) during setup — it points at the fake-mychart.fanpierlabs.com sandbox (sign in with homer / donuts123).

See claude-desktop-extension/README.md for details.

2. Mobile app

The Expo app in expo-app/ runs the scrapers on-device. See expo-app/README.md to build and run it (bunx expo run:ios).

3. CLI and library

npm i -g mychart-cli
mychart-cli --action search_mycharts --arg query="your health system"   # find your portal
mychart-cli --host mychart.example.org                                   # sign in and print your chart

Or from a checkout: bun run cli mychart [flags]. Start with the mychart-cli README, then the CLI reference or the library API reference.

Architecture

openrecord/
  scrapers/                  # Shared MyChart scraper code (login, API calls, parsing)
  shared/                    # Capability registry (what every client can do), common types, host limiter
  claude-desktop-extension/  # Claude Desktop .mcpb extension
  expo-app/                  # Expo/React Native mobile app
  npm-package/               # mychart-cli npm package (CLI + library)
  read-local-passwords/      # Browser password store extraction (used by the CLI)
  fake-mychart/              # Fake MyChart server for development and CI
  openrecord-splash/         # Static splash site + in-browser interactive demo
  openrecord-demo-lambda/    # AI proxy behind the demo and the mobile app's free tier
  dev-scripts/               # Run-it-yourself diagnostics

The scrapers are shared across all entry points. Each entry point handles auth and session management differently, but they all call into the same scraper functions, and every client derives its tools from one capability registry in shared/capabilities/ — so a capability added there ships in the extension, the app, the CLI and the library at once.

Development

bun install

# Fake MyChart (for development without real credentials)
bun run fake-mychart         # Fake MyChart server on a random port (4000-5000), printed at startup

# CLI
bun run cli                  # Run the CLI scraper

# Tests
bun run test                 # Unit tests
bun run test:integration     # Integration tests (needs the compose fake-mychart)

# Linting
bun run lint                 # ESLint
bun run fix                  # ESLint auto-fix

Telemetry

The CLI and mychart-cli npm package send anonymous usage events (event name, MyChart portal hostname, OS platform / arch / version, runtime version, plus a per-machine random UUID for dedupe). No public IP, OS hostname, OS username, git identity, or scraped chart content is ever collected. Set MYCHART_CLI_TELEMETRY_DISABLED=1 to opt out. Details: mychart-cli telemetry.

On start the CLI also fetches a small version manifest from openrecord.fanpierlabs.com to tell you if a newer release exists. That request reaches our CDN, so it reveals your IP address and how often you run the CLI — nothing else, and no chart content. The same MYCHART_CLI_TELEMETRY_DISABLED=1 turns it off.

Privacy

Privacy policy — what stays on your device (everything scraped, plus your credentials), what leaves it (the AI call you make, and the anonymous events above), and who receives it for each client.

License

Proprietary source-available license (see LICENSE). Viewing and personal/educational use permitted; no commercial use, redistribution, SaaS offerings, or competing products without written permission from Fan Pier Labs.

About

No description, website, or topics provided.

Resources

Stars

71 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages