Connectors · Work & projects
DrChrono MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to DrChrono and the rest of your systems. It gives your agent 315 DrChrono actions (162 reads, 134 writes and 19 that wait for a confirmation) and holds the DrChrono credential itself, so the agent never does. It paces DrChrono's limits and records every call. Connecting DrChrono needs your own DrChrono OAuth app and one admin sign-in.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "drchrono.appointments.list", intent: "check which DrChrono account is connected"}# Retrieve or search appointment or breaks · read · 1 upstream call- 315actionsin one signed file
- 162readlook, never change
- 134writecreate and update
- 19wait for a yesdestructive, confirmed first
Set up
Connect DrChrono in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect DrChrono.
OAuth 2.0, authorization code. You register your own OAuth app with DrChrono, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
Before the first sign-in, DrChrono needs an OAuth app of your own, registered in its developer portal. actionlake has no DrChrono app to lend you.
access_tokenAccess token from one sign-in with your own OAuth apprefresh_tokenRefresh token from the same sign-in; the access token is renewed from itclient_idDrChrono API application client ID (DrChrono > Account > API > your application)client_secretDrChrono API application client secret
account { op: "connections.requirements", service: "drchrono" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "drchrono.appointments.list" }# retrieve or search appointment or breaks · read · 1 upstream callcheck { action: "drchrono.tasks.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
DrChrono at a glance
- Sign-in
- OAuth 2.0, authorization code. You register your own OAuth app with DrChrono, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.
- You provide
access_tokenrefresh_tokenclient_idclient_secret- Limits we pace to
- 500 calls an hour, per connection
- API covered
- DrChrono API v4 - Hunt Valley (OpenAPI 3.0)
app.drchrono.com - Built from
- DrChrono's documentation, read 23 October 2026app.drchrono.comapp.drchrono.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 162 of 162 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 5, so ask can line DrChrono up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in DrChrono.
315 actions in 89 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 162readlook, never change
- 134writecreate and update
- 19destructivewait for a confirmation
Patients
93 read · 4 write · 2 destructive
Retrieve or search patients · Create patient · Retrieve an existing patient · Update an existing patient (partial)
Appointment profiles
62 read · 3 write · 1 destructive
Create appointment profiles for a doctor's calendar · Retrieve or search appointment profiles for a doctor's calendar · Retrieve an existing appointment profile · Update an existing appointment profile (full replace)
Appointment templates
62 read · 3 write · 1 destructive
Create appointment templates for a doctor's calendar · Retrieve or search appointment templates for a doctor's calendar · Retrieve an existing appointment template · Update an existing appointment template (full replace)
Appointments
62 read · 3 write · 1 destructive
Retrieve or search appointment or breaks · Create a new appointment or break on doctor's calendar · Retrieve an existing appointment or break · Delete an existing appointment or break
Appointments list
62 read · 3 write · 1 destructive
Submit appointments list · Retrieve appointments list by ID · Replace appointments list by ID (full replace) · Retrieve appointments list
Lab orders
62 read · 3 write · 1 destructive
Create lab orders · Retrieve or search lab orders · Retrieve an existing lab order · Update an existing lab order (full replace)
Lab results
62 read · 3 write · 1 destructive
Create lab results · Retrieve or search lab results · Retrieve an existing lab result · Update an existing lab result (full replace)
Lab tests
62 read · 3 write · 1 destructive
Create lab tests · Retrieve or search lab tests · Retrieve an existing lab test · Update an existing lab test (full replace)
81 more areas · 264 actions
- Line items 6
- Medications 6
- Messages 6
- Patient lab results 6
- Patients summary 6
- Reminder profiles 6
- Sublabs 6
- Allergies 5
- Clinical note field values 5
- Comm logs 5
- Consent forms 5
- Custom appointment fields 5
- Custom demographics 5
- Offices 5
- Patient communications 5
- Patient flag types 5
- Patient interventions 5
- Patient messages 5
- Patient physical exams 5
- Patient risk assessments 5
- Patient vaccine records 5
- Problems 5
- Task categories 5
- Task notes 5
- Task statuses 5
- Task templates 5
- Tasks 5
- Telehealth appointments 5
- Amendments 4
- Doctor work schedule 4
- Documents 4
- Lab documents 4
- Office work schedule 4
- Signed consent forms 4
- Claim billing notes 3
- Clinical note field types 3
- Eobs 3
- Inventory vaccines 3
- Message threads 3
- Patient payments 3
- Telehealth appointment history 3
- Users 3
- Billing profiles 2
- Care plans 2
- Care team members 2
- Clinical note field values list 2
- Clinical note templates 2
- Clinical notes 2
- Clinical notes list 2
- Custom insurance plan names 2
- Custom vitals 2
- Doctor options 2
- Doctors 2
- Eligibility checks 2
- Eligibility checks list 2
- Fee schedules 2
- Fee schedules V2 2
- Iframe integration 2
- Implantable devices 2
- Insurances 2
- Inventory categories 2
- Lab orders summary 2
- Line items list 2
- Patient payment log 2
- Patients list 2
- Prescription messages 2
- Prescription messages list 2
- Procedures 2
- Staff 2
- Transactions 2
- Transactions list 2
- User groups 2
- Audit log 1
- Availability 1
- Day sheet charges 1
- Day sheet credits 1
- Day sheet patient payments 1
- Day sheet totals 1
- Line item deletions 1
- Patient authorizations 1
- Recurring appointment instances 1
Top actions
The DrChrono API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
drchrono.tasks.listRetrieve or search tasks | Retrieve or search tasks. | read | this connector |
drchrono.doctors.listRetrieve or search doctors within practice group | Retrieve or search doctors within practice group. | read | this connector |
drchrono.offices.listRetrieve or search offices | Retrieve or search offices. | read | this connector |
drchrono.patients.listRetrieve or search patients | Retrieve or search patients. | read | this connector |
drchrono.appointments.listRetrieve or search appointment or breaks | Retrieve or search appointment or breaks. | read | this connector |
drchrono.users.listRetrieve or search users, `/api/users/current` can be used to identify logged in user, it will redirect to `/api/user... | Retrieve or search users, `/api/users/current` can be used to identify logged in user, it will redirect to `/api/user.... | read | this connector |
drchrono.tasks.createCreate a task | Create a task. | write | this connector |
drchrono.problems.listRetrieve or search patient problems | Retrieve or search patient problems. | read | this connector |
drchrono.allergies.listRetrieve or search patient allergies | Retrieve or search patient allergies. | read | this connector |
drchrono.patients.createCreate patient | Create patient. | write | this connector |
drchrono.appointments.createCreate a new appointment or break on doctor's calendar | Create a new appointment or break on doctor's calendar. | write | this connector |
drchrono.appointments.deleteDelete an existing appointment or break | Delete an existing appointment or break. | destructive | this connector |
Try it
Prompts to paste into Claude.
Each one names the DrChrono actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which DrChrono tasks are overdue, and who owns each one?
calls
drchrono.tasks.list - Writewrite
Create a task in DrChrono. Show me exactly what you will send before you save it.
calls
drchrono.tasks.create - Across systemsread
Which contacts are in both DrChrono and HaloPSA, and how many are in only one of them?
calls
drchrono.patients.listhalopsa.users.list
Across your systems
DrChrono, joined to the rest of your business.
One ask fetches from DrChrono and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which contacts are in both DrChrono and HaloPSA, and how many are in only one of them?
drchrono.patients.list+halopsa.users.list, oncrm.contact· HaloPSAWhich contacts are in both DrChrono and NetSuite, and how many are in only one of them?
drchrono.patients.list+netsuite.views.contacts, oncrm.contact· NetSuite
identity.user 517crm.contact 192work.task 105crm.location 49service.service_appointment 9ask { intent: "which contacts are in both DrChrono and HaloPSA, and how many are in only one of them", steps: [ { action: "drchrono.patients.list", as: "people", input: {}, limit: 100, max_pages: 5 }, { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 }, { join: { left: "people", right: "people2", on: "crm.contact", group_by: "people.email", select: ["people.email", "count(people2.id) as in_halopsa"] } } ]}Governance for DrChrono
Destructive actions wait for a yes.
19 DrChrono actions are destructive. These are all of them:
- Delete an existing appointment or break
drchrono.appointments.delete - Delete an existing sub vendor
drchrono.sublabs.delete - Delete an existing message in doctor's message center
drchrono.messages.delete - Delete an existing patient
drchrono.patients.delete - Delete an existing appointment template (DELETE /api/documents/{id})
drchrono.documents.delete - Delete an existing lab test
drchrono.lab_tests.delete - Delete an existing patient amendment, you can only interact with amendments created by your API application
drchrono.amendments.delete - Delete an existing lab order
drchrono.lab_orders.delete - Delete line items by ID
drchrono.line_items.delete - Delete an existing lab result
drchrono.lab_results.delete - Delete an existing lab order document
drchrono.lab_documents.delete - Delete patients summary by ID
drchrono.patients_summary.delete - Delete appointments list by ID
drchrono.appointments_list.delete - Delete an existing reminder profile
drchrono.reminder_profiles.delete - Disable the app's iframe integration for the doctor
drchrono.iframe_integration.delete - Delete patient lab results by ID
drchrono.patient_lab_results.delete - Delete an existing appointment profile
drchrono.appointment_profiles.delete - Delete an existing appointment template
drchrono.appointment_templates.delete - Revoke sent onpatient invites
drchrono.patients_onpatient_access.delete
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete an existing appointment or break?
intent: the user asked me to delete an existing appointment or break
account { op: "keys.create", name: "drchrono-agent", allowed_actions: ["drchrono.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "drchrono.appointments.delete", approver: "[email protected]" }, { match: "drchrono.sublabs.delete", approver: "[email protected]" }, { match: "drchrono.messages.delete", approver: "[email protected]" } ]}Cost
What DrChrono costs on actionlake.
Every DrChrono action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call DrChrono refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 315 DrChrono actions
- 315actions pageeach page of a long list is one call
- 162reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every DrChrono action.
315 actions by area: the id your agent calls, what it does, and its effect.
Patients9
drchrono.patients.createCreate patientwritedrchrono.patients.getRetrieve an existing patientreaddrchrono.patients.listRetrieve or search patientsreaddrchrono.patients.updateUpdate an existing patient (partial)writedrchrono.patients.deleteDelete an existing patientdestructivedrchrono.patients.replaceUpdate an existing patient (full replace)write- and 3 more in this area
Appointment profiles6
drchrono.appointment_profiles.createCreate appointment profiles for a doctor's calendarwritedrchrono.appointment_profiles.getRetrieve an existing appointment profilereaddrchrono.appointment_profiles.listRetrieve or search appointment profiles for a doctor's calendarreaddrchrono.appointment_profiles.replaceUpdate an existing appointment profile (full replace)writedrchrono.appointment_profiles.deleteDelete an existing appointment profiledestructivedrchrono.appointment_profiles.updateUpdate an existing appointment profile (partial)write
Appointment templates6
drchrono.appointment_templates.createCreate appointment templates for a doctor's calendarwritedrchrono.appointment_templates.getRetrieve an existing appointment templatereaddrchrono.appointment_templates.listRetrieve or search appointment templates for a doctor's calendarreaddrchrono.appointment_templates.replaceUpdate an existing appointment template (full replace)writedrchrono.appointment_templates.deleteDelete an existing appointment templatedestructivedrchrono.appointment_templates.updateUpdate an existing appointment template (partial)write
Appointments6
drchrono.appointments.createCreate a new appointment or break on doctor's calendarwritedrchrono.appointments.deleteDelete an existing appointment or breakdestructivedrchrono.appointments.getRetrieve an existing appointment or breakreaddrchrono.appointments.listRetrieve or search appointment or breaksreaddrchrono.appointments.replaceUpdate an existing appointment or break (full replace)writedrchrono.appointments.updateUpdate an existing appointment or break (partial)write
Appointments list6
drchrono.appointments_list.getRetrieve appointments list by IDreaddrchrono.appointments_list.replaceReplace appointments list by ID (full replace)writedrchrono.appointments_list.resultsRetrieve appointments listreaddrchrono.appointments_list.submitSubmit appointments listwritedrchrono.appointments_list.deleteDelete appointments list by IDdestructivedrchrono.appointments_list.updateUpdate appointments list by ID (partial)write
Lab orders6
drchrono.lab_orders.createCreate lab orderswritedrchrono.lab_orders.getRetrieve an existing lab orderreaddrchrono.lab_orders.listRetrieve or search lab ordersreaddrchrono.lab_orders.replaceUpdate an existing lab order (full replace)writedrchrono.lab_orders.deleteDelete an existing lab orderdestructivedrchrono.lab_orders.updateUpdate an existing lab order (partial)write
Lab results6
drchrono.lab_results.createCreate lab resultswritedrchrono.lab_results.getRetrieve an existing lab resultreaddrchrono.lab_results.listRetrieve or search lab resultsreaddrchrono.lab_results.replaceUpdate an existing lab result (full replace)writedrchrono.lab_results.deleteDelete an existing lab resultdestructivedrchrono.lab_results.updateUpdate an existing lab result (partial)write
Lab tests6
drchrono.lab_tests.createCreate lab testswritedrchrono.lab_tests.getRetrieve an existing lab testreaddrchrono.lab_tests.listRetrieve or search lab testsreaddrchrono.lab_tests.replaceUpdate an existing lab test (full replace)writedrchrono.lab_tests.deleteDelete an existing lab testdestructivedrchrono.lab_tests.updateUpdate an existing lab test (partial)write
Line items6
drchrono.line_items.createCreate billing line item for appointmentswritedrchrono.line_items.getRetrieve an existing billing line itemreaddrchrono.line_items.listRetrieve or search billing line itemsreaddrchrono.line_items.replaceReplace line items by ID (full replace)writedrchrono.line_items.deleteDelete line items by IDdestructivedrchrono.line_items.updateUpdate line items by ID (partial)write
Medications6
drchrono.medications.createCreate patient medicationswritedrchrono.medications.getRetrieve an existing patient medicationsreaddrchrono.medications.listRetrieve or search patient medicationsreaddrchrono.medications.replaceUpdate an existing patient medications (full replace)writedrchrono.medications.append_to_pharmacy_noteAppend a message to the "pharmacy_note" section of the prescription, in a new paragraphwritedrchrono.medications.updateUpdate an existing patient medications (partial)write
Messages6
drchrono.messages.createCreate messages in doctor's message centerwritedrchrono.messages.getRetrieve an existing message in doctor's message centerreaddrchrono.messages.listRetrieve or search messages in doctor's message centerreaddrchrono.messages.replaceUpdate an existing message in doctor's message center (full replace)writedrchrono.messages.deleteDelete an existing message in doctor's message centerdestructivedrchrono.messages.updateUpdate an existing message in doctor's message center (partial)write
Patient lab results6
drchrono.patient_lab_results.createCreate patient lab resultswritedrchrono.patient_lab_results.getRetrieve patient lab results by IDreaddrchrono.patient_lab_results.listRetrieve patient lab resultsreaddrchrono.patient_lab_results.replaceReplace patient lab results by ID (full replace)writedrchrono.patient_lab_results.deleteDelete patient lab results by IDdestructivedrchrono.patient_lab_results.updateUpdate patient lab results by ID (partial)write
Patients summary6
drchrono.patients_summary.createCreate patients summarywritedrchrono.patients_summary.getRetrieve patients summary by IDreaddrchrono.patients_summary.listRetrieve patients summaryreaddrchrono.patients_summary.replaceReplace patients summary by ID (full replace)writedrchrono.patients_summary.deleteDelete patients summary by IDdestructivedrchrono.patients_summary.updateUpdate patients summary by ID (partial)write
Reminder profiles6
drchrono.reminder_profiles.createCreate reminder profilewritedrchrono.reminder_profiles.getRetrieve an existing reminder profilereaddrchrono.reminder_profiles.listRetrieve or search reminder profilesreaddrchrono.reminder_profiles.replaceUpdate an existing reminder profile (full replace)writedrchrono.reminder_profiles.deleteDelete an existing reminder profiledestructivedrchrono.reminder_profiles.updateUpdate an existing reminder profile (partial)write
Sublabs6
drchrono.sublabs.createCreate sub-vendors - When you get orders, submit them via `/api/lab_orders`, such that doctors can see them in drchronowritedrchrono.sublabs.getRetrieve an existing sub vendorreaddrchrono.sublabs.listRetrieve or search sub vendorsreaddrchrono.sublabs.replaceUpdate an existing sub vendor (full replace)writedrchrono.sublabs.deleteDelete an existing sub vendordestructivedrchrono.sublabs.updateUpdate an existing sub vendor (partial)write
Allergies5
drchrono.allergies.createCreate patient allergywritedrchrono.allergies.getRetrieve an existing patient allergyreaddrchrono.allergies.listRetrieve or search patient allergiesreaddrchrono.allergies.replaceUpdate an existing patient allergy (full replace)writedrchrono.allergies.updateUpdate an existing patient allergy (partial)write
Clinical note field values5
drchrono.clinical_note_field_values.createCreate clinical note field valuewritedrchrono.clinical_note_field_values.getRetrieve an existing clinical note field valuereaddrchrono.clinical_note_field_values.listRetrieve or search clinical note field valuesreaddrchrono.clinical_note_field_values.replaceUpdate an existing clinical note field value (full replace)writedrchrono.clinical_note_field_values.updateUpdate an existing clinical note field value (partial)write
Comm logs5
drchrono.comm_logs.createCreate communication (phone call) logswritedrchrono.comm_logs.getRetrieve an existing communication (phone call) logsreaddrchrono.comm_logs.listRetrieve or search communicatioin (phone call) logsreaddrchrono.comm_logs.replaceUpdate an existing communication (phone call) logs (full replace)writedrchrono.comm_logs.updateUpdate an existing communication (phone call) logs (partial)write
Consent forms5
drchrono.consent_forms.apply_to_appointmentAssign (apply) a consent form to appointmentwritedrchrono.consent_forms.getRetrieve an existing patient consent formreaddrchrono.consent_forms.listRetrieve or search patient consent formsreaddrchrono.consent_forms.unapply_from_appointmentUnassign (unapply) a consent form from appointmentwritedrchrono.consent_forms.updateUpdate an existing patient consent form (partial)write
Custom appointment fields5
drchrono.custom_appointment_fields.createCreate custom appointment fieldswritedrchrono.custom_appointment_fields.getRetrieve an existing custom appointment fieldreaddrchrono.custom_appointment_fields.listRetrieve or search custom appointment fieldsreaddrchrono.custom_appointment_fields.replaceUpdate an existing custom appointment field (full replace)writedrchrono.custom_appointment_fields.updateUpdate an existing custom appointment field (partial)write
Custom demographics5
drchrono.custom_demographics.createCreate custom demographics fieldswritedrchrono.custom_demographics.getRetrieve an existing custom demographics fieldreaddrchrono.custom_demographics.listRetrieve or search custom demographics fieldsreaddrchrono.custom_demographics.replaceUpdate an existing custom demographics field (full replace)writedrchrono.custom_demographics.updateUpdate an existing custom demographics field (partial)write
Offices5
drchrono.offices.add_exam_roomAdd an exam room to the officewritedrchrono.offices.getRetrieve an existing officereaddrchrono.offices.listRetrieve or search officesreaddrchrono.offices.replaceUpdate an existing office (full replace)writedrchrono.offices.updateUpdate an existing office (partial)write
Patient communications5
drchrono.patient_communications.createCreate patient communication for CQMwritedrchrono.patient_communications.getRetrieve an existing patient communication for CQMreaddrchrono.patient_communications.listRetrieve or search patient communications for CQMreaddrchrono.patient_communications.replaceUpdate an existing patient communication for CQM (full replace)writedrchrono.patient_communications.updateUpdate an existing patient communication for CQM (partial)write
Patient flag types5
drchrono.patient_flag_types.createCreate patient flag typeswritedrchrono.patient_flag_types.getRetrieve an existing patient flag typereaddrchrono.patient_flag_types.listRetrieve or search patient flag typesreaddrchrono.patient_flag_types.replaceUpdate an existing patient flag type (full replace)writedrchrono.patient_flag_types.updateUpdate an existing patient flag type (partial)write
Patient interventions5
drchrono.patient_interventions.createCreate patient intervention for CQMwritedrchrono.patient_interventions.getRetrieve an existing patient intervention for CQMreaddrchrono.patient_interventions.listRetrieve or search patient interventions for CQMreaddrchrono.patient_interventions.replaceUpdate an existing patient intervention for CQM (full replace)writedrchrono.patient_interventions.updateUpdate an existing patient intervention for CQM (partial)write
Patient messages5
drchrono.patient_messages.createCreate patient messageswritedrchrono.patient_messages.getRetrieve patient messages by IDreaddrchrono.patient_messages.listRetrieve patient messagesreaddrchrono.patient_messages.replaceReplace patient messages by ID (full replace)writedrchrono.patient_messages.updateUpdate patient messages by ID (partial)write
Patient physical exams5
drchrono.patient_physical_exams.createCreate patient physical exam for CQMwritedrchrono.patient_physical_exams.getRetrieve an existing patient physical exam for CQMreaddrchrono.patient_physical_exams.listRetrieve or search patient physical exams for CQMreaddrchrono.patient_physical_exams.replaceUpdate an existing patient physical exam for CQM (full replace)writedrchrono.patient_physical_exams.updateUpdate an existing patient physical exam for CQM (partial)write
Patient risk assessments5
drchrono.patient_risk_assessments.createCreate patient risk assessmentswritedrchrono.patient_risk_assessments.getRetrieve patient risk assessments by IDreaddrchrono.patient_risk_assessments.listRetrieve patient risk assessmentsreaddrchrono.patient_risk_assessments.replaceReplace patient risk assessments by ID (full replace)writedrchrono.patient_risk_assessments.updateUpdate patient risk assessments by ID (partial)write
Patient vaccine records5
drchrono.patient_vaccine_records.createCreate patient vaccine recordswritedrchrono.patient_vaccine_records.getRetrieve an existing patient vaccine recordsreaddrchrono.patient_vaccine_records.listRetrieve or search patient vaccine recordsreaddrchrono.patient_vaccine_records.replaceUpdate an existing patient vaccine records (full replace)writedrchrono.patient_vaccine_records.updateUpdate an existing patient vaccine records (partial)write
Problems5
drchrono.problems.createCreate patient problemswritedrchrono.problems.getRetrieve an existing patient problemsreaddrchrono.problems.listRetrieve or search patient problemsreaddrchrono.problems.replaceUpdate an existing patient problems (full replace)writedrchrono.problems.updateUpdate an existing patient problems (partial)write
Task categories 5Task notes 5Task statuses 5Task templates 5Tasks 5Telehealth appointments 5Amendments 4Doctor work schedule 4Documents 4Lab documents 4Office work schedule 4Signed consent forms 4Claim billing notes 3Clinical note field types 3Eobs 3Inventory vaccines 3Message threads 3Patient payments 3Telehealth appointment history 3Users 3Billing profiles 2Care plans 2Care team members 2Clinical note field values list 2Clinical note templates 2Clinical notes 2Clinical notes list 2Custom insurance plan names 2Custom vitals 2Doctor options 2Doctors 2Eligibility checks 2Eligibility checks list 2Fee schedules 2Fee schedules V2 2Iframe integration 2Implantable devices 2Insurances 2Inventory categories 2Lab orders summary 2Line items list 2Patient payment log 2Patients list 2Prescription messages 2Prescription messages list 2Procedures 2Staff 2Transactions 2Transactions list 2User groups 2Audit log 1Availability 1Day sheet charges 1Day sheet credits 1Day sheet patient payments 1Day sheet totals 1Line item deletions 1Patient authorizations 1Recurring appointment instances 1
This index shows a sample of each area. All 315 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.
Questions
The DrChrono MCP server, answered.
Is there a DrChrono MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 315 DrChrono actions across patients, appointment profiles, appointment templates and appointments, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by DrChrono.
What do I need to connect DrChrono?
Your own DrChrono OAuth app, registered with DrChrono (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no DrChrono app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. The free call account { op: "connections.requirements", service: "drchrono" } lists exactly what to paste.
Can an AI agent delete or change things in DrChrono?
Only if its key allows it, and only with an explicit confirmation. 19 DrChrono actions are destructive, including delete an existing appointment or break, delete an existing sub vendor and delete an existing message in doctor's message center. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my DrChrono API limit?
actionlake paces every call to the limits in the DrChrono service file: 500 calls an hour per connection. Repeated reads are answered from cache (162 DrChrono actions can be), which never reaches DrChrono.
What does a DrChrono action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (315 DrChrono actions page). Cache hits, searches, dry runs and calls DrChrono refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which DrChrono API does it cover?
The DrChrono API v4 - Hunt Valley (OpenAPI 3.0) at app.drchrono.com. It is built from DrChrono's documentation as read on 23 October 2026. 315 actions in 89 areas, each one in the signed service file (version 1.0.0).
Can I combine DrChrono with my other systems?
Yes. ask joins DrChrono to HaloPSA or NetSuite on the same customer and returns the answer rather than every row. DrChrono maps crm.contact, which 192 other connectors also map.
Does actionlake keep my DrChrono data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your DrChrono credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent DrChrono today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.