Skip to content

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/mcp
the first call
do {  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.

  1. 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
  2. 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 app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_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
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates 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
  1. Patients

    9

    3 read · 4 write · 2 destructive

    Retrieve or search patients · Create patient · Retrieve an existing patient · Update an existing patient (partial)

  2. Appointment profiles

    6

    2 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)

  3. Appointment templates

    6

    2 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)

  4. Appointments

    6

    2 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

  5. Appointments list

    6

    2 read · 3 write · 1 destructive

    Submit appointments list · Retrieve appointments list by ID · Replace appointments list by ID (full replace) · Retrieve appointments list

  6. Lab orders

    6

    2 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)

  7. Lab results

    6

    2 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)

  8. Lab tests

    6

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

ActionWhat it doesEffectSame name in
drchrono.tasks.listRetrieve or search tasksRetrieve or search tasks.readthis connector
drchrono.doctors.listRetrieve or search doctors within practice groupRetrieve or search doctors within practice group.readthis connector
drchrono.offices.listRetrieve or search officesRetrieve or search offices.readthis connector
drchrono.patients.listRetrieve or search patientsRetrieve or search patients.readthis connector
drchrono.appointments.listRetrieve or search appointment or breaksRetrieve or search appointment or breaks.readthis 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....readthis connector
drchrono.tasks.createCreate a taskCreate a task.writethis connector
drchrono.problems.listRetrieve or search patient problemsRetrieve or search patient problems.readthis connector
drchrono.allergies.listRetrieve or search patient allergiesRetrieve or search patient allergies.readthis connector
drchrono.patients.createCreate patientCreate patient.writethis connector
drchrono.appointments.createCreate a new appointment or break on doctor's calendarCreate a new appointment or break on doctor's calendar.writethis connector
drchrono.appointments.deleteDelete an existing appointment or breakDelete an existing appointment or break.destructivethis 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.

  1. Readread

    Which DrChrono tasks are overdue, and who owns each one?

    callsdrchrono.tasks.list

  2. Writewrite

    Create a task in DrChrono. Show me exactly what you will send before you save it.

    callsdrchrono.tasks.create

  3. Across systemsread

    Which contacts are in both DrChrono and HaloPSA, and how many are in only one of them?

    callsdrchrono.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, on crm.contact · HaloPSA

  • Which contacts are in both DrChrono and NetSuite, and how many are in only one of them?

    drchrono.patients.list + netsuite.views.contacts, on crm.contact · NetSuite

Also mapped by other connectorsidentity.user 517crm.contact 192work.task 105crm.location 49service.service_appointment 9
ask
ask {  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"]    } }  ]}
Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for DrChrono

Destructive actions wait for a yes.

19 DrChrono actions are destructive. These are all of them:

  • Delete an existing appointment or breakdrchrono.appointments.delete
  • Delete an existing sub vendordrchrono.sublabs.delete
  • Delete an existing message in doctor's message centerdrchrono.messages.delete
  • Delete an existing patientdrchrono.patients.delete
  • Delete an existing appointment template (DELETE /api/documents/{id})drchrono.documents.delete
  • Delete an existing lab testdrchrono.lab_tests.delete
  • Delete an existing patient amendment, you can only interact with amendments created by your API applicationdrchrono.amendments.delete
  • Delete an existing lab orderdrchrono.lab_orders.delete
  • Delete line items by IDdrchrono.line_items.delete
  • Delete an existing lab resultdrchrono.lab_results.delete
  • Delete an existing lab order documentdrchrono.lab_documents.delete
  • Delete patients summary by IDdrchrono.patients_summary.delete
  • Delete appointments list by IDdrchrono.appointments_list.delete
  • Delete an existing reminder profiledrchrono.reminder_profiles.delete
  • Disable the app's iframe integration for the doctordrchrono.iframe_integration.delete
  • Delete patient lab results by IDdrchrono.patient_lab_results.delete
  • Delete an existing appointment profiledrchrono.appointment_profiles.delete
  • Delete an existing appointment templatedrchrono.appointment_templates.delete
  • Revoke sent onpatient invitesdrchrono.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.

dodrchrono.appointments.deleteconfirm_policy: human

Delete an existing appointment or break?

intent: the user asked me to delete an existing appointment or break

run suspended · waiting for a named person · key drchrono-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
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]" }  ]}
Illustrative. Scoped to DrChrono only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

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

See pricing

Action index

Every DrChrono action.

315 actions by area: the id your agent calls, what it does, and its effect.

Patients9
  • drchrono.patients.createCreate patientwrite
  • drchrono.patients.getRetrieve an existing patientread
  • drchrono.patients.listRetrieve or search patientsread
  • drchrono.patients.updateUpdate an existing patient (partial)write
  • drchrono.patients.deleteDelete an existing patientdestructive
  • drchrono.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 calendarwrite
  • drchrono.appointment_profiles.getRetrieve an existing appointment profileread
  • drchrono.appointment_profiles.listRetrieve or search appointment profiles for a doctor's calendarread
  • drchrono.appointment_profiles.replaceUpdate an existing appointment profile (full replace)write
  • drchrono.appointment_profiles.deleteDelete an existing appointment profiledestructive
  • drchrono.appointment_profiles.updateUpdate an existing appointment profile (partial)write
Appointment templates6
  • drchrono.appointment_templates.createCreate appointment templates for a doctor's calendarwrite
  • drchrono.appointment_templates.getRetrieve an existing appointment templateread
  • drchrono.appointment_templates.listRetrieve or search appointment templates for a doctor's calendarread
  • drchrono.appointment_templates.replaceUpdate an existing appointment template (full replace)write
  • drchrono.appointment_templates.deleteDelete an existing appointment templatedestructive
  • drchrono.appointment_templates.updateUpdate an existing appointment template (partial)write
Appointments6
  • drchrono.appointments.createCreate a new appointment or break on doctor's calendarwrite
  • drchrono.appointments.deleteDelete an existing appointment or breakdestructive
  • drchrono.appointments.getRetrieve an existing appointment or breakread
  • drchrono.appointments.listRetrieve or search appointment or breaksread
  • drchrono.appointments.replaceUpdate an existing appointment or break (full replace)write
  • drchrono.appointments.updateUpdate an existing appointment or break (partial)write
Appointments list6
  • drchrono.appointments_list.getRetrieve appointments list by IDread
  • drchrono.appointments_list.replaceReplace appointments list by ID (full replace)write
  • drchrono.appointments_list.resultsRetrieve appointments listread
  • drchrono.appointments_list.submitSubmit appointments listwrite
  • drchrono.appointments_list.deleteDelete appointments list by IDdestructive
  • drchrono.appointments_list.updateUpdate appointments list by ID (partial)write
Lab orders6
  • drchrono.lab_orders.createCreate lab orderswrite
  • drchrono.lab_orders.getRetrieve an existing lab orderread
  • drchrono.lab_orders.listRetrieve or search lab ordersread
  • drchrono.lab_orders.replaceUpdate an existing lab order (full replace)write
  • drchrono.lab_orders.deleteDelete an existing lab orderdestructive
  • drchrono.lab_orders.updateUpdate an existing lab order (partial)write
Lab results6
  • drchrono.lab_results.createCreate lab resultswrite
  • drchrono.lab_results.getRetrieve an existing lab resultread
  • drchrono.lab_results.listRetrieve or search lab resultsread
  • drchrono.lab_results.replaceUpdate an existing lab result (full replace)write
  • drchrono.lab_results.deleteDelete an existing lab resultdestructive
  • drchrono.lab_results.updateUpdate an existing lab result (partial)write
Lab tests6
  • drchrono.lab_tests.createCreate lab testswrite
  • drchrono.lab_tests.getRetrieve an existing lab testread
  • drchrono.lab_tests.listRetrieve or search lab testsread
  • drchrono.lab_tests.replaceUpdate an existing lab test (full replace)write
  • drchrono.lab_tests.deleteDelete an existing lab testdestructive
  • drchrono.lab_tests.updateUpdate an existing lab test (partial)write
Line items6
  • drchrono.line_items.createCreate billing line item for appointmentswrite
  • drchrono.line_items.getRetrieve an existing billing line itemread
  • drchrono.line_items.listRetrieve or search billing line itemsread
  • drchrono.line_items.replaceReplace line items by ID (full replace)write
  • drchrono.line_items.deleteDelete line items by IDdestructive
  • drchrono.line_items.updateUpdate line items by ID (partial)write
Medications6
  • drchrono.medications.createCreate patient medicationswrite
  • drchrono.medications.getRetrieve an existing patient medicationsread
  • drchrono.medications.listRetrieve or search patient medicationsread
  • drchrono.medications.replaceUpdate an existing patient medications (full replace)write
  • drchrono.medications.append_to_pharmacy_noteAppend a message to the "pharmacy_note" section of the prescription, in a new paragraphwrite
  • drchrono.medications.updateUpdate an existing patient medications (partial)write
Messages6
  • drchrono.messages.createCreate messages in doctor's message centerwrite
  • drchrono.messages.getRetrieve an existing message in doctor's message centerread
  • drchrono.messages.listRetrieve or search messages in doctor's message centerread
  • drchrono.messages.replaceUpdate an existing message in doctor's message center (full replace)write
  • drchrono.messages.deleteDelete an existing message in doctor's message centerdestructive
  • drchrono.messages.updateUpdate an existing message in doctor's message center (partial)write
Patient lab results6
  • drchrono.patient_lab_results.createCreate patient lab resultswrite
  • drchrono.patient_lab_results.getRetrieve patient lab results by IDread
  • drchrono.patient_lab_results.listRetrieve patient lab resultsread
  • drchrono.patient_lab_results.replaceReplace patient lab results by ID (full replace)write
  • drchrono.patient_lab_results.deleteDelete patient lab results by IDdestructive
  • drchrono.patient_lab_results.updateUpdate patient lab results by ID (partial)write
Patients summary6
  • drchrono.patients_summary.createCreate patients summarywrite
  • drchrono.patients_summary.getRetrieve patients summary by IDread
  • drchrono.patients_summary.listRetrieve patients summaryread
  • drchrono.patients_summary.replaceReplace patients summary by ID (full replace)write
  • drchrono.patients_summary.deleteDelete patients summary by IDdestructive
  • drchrono.patients_summary.updateUpdate patients summary by ID (partial)write
Reminder profiles6
  • drchrono.reminder_profiles.createCreate reminder profilewrite
  • drchrono.reminder_profiles.getRetrieve an existing reminder profileread
  • drchrono.reminder_profiles.listRetrieve or search reminder profilesread
  • drchrono.reminder_profiles.replaceUpdate an existing reminder profile (full replace)write
  • drchrono.reminder_profiles.deleteDelete an existing reminder profiledestructive
  • drchrono.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 drchronowrite
  • drchrono.sublabs.getRetrieve an existing sub vendorread
  • drchrono.sublabs.listRetrieve or search sub vendorsread
  • drchrono.sublabs.replaceUpdate an existing sub vendor (full replace)write
  • drchrono.sublabs.deleteDelete an existing sub vendordestructive
  • drchrono.sublabs.updateUpdate an existing sub vendor (partial)write
Allergies5
  • drchrono.allergies.createCreate patient allergywrite
  • drchrono.allergies.getRetrieve an existing patient allergyread
  • drchrono.allergies.listRetrieve or search patient allergiesread
  • drchrono.allergies.replaceUpdate an existing patient allergy (full replace)write
  • drchrono.allergies.updateUpdate an existing patient allergy (partial)write
Clinical note field values5
  • drchrono.clinical_note_field_values.createCreate clinical note field valuewrite
  • drchrono.clinical_note_field_values.getRetrieve an existing clinical note field valueread
  • drchrono.clinical_note_field_values.listRetrieve or search clinical note field valuesread
  • drchrono.clinical_note_field_values.replaceUpdate an existing clinical note field value (full replace)write
  • drchrono.clinical_note_field_values.updateUpdate an existing clinical note field value (partial)write
Comm logs5
  • drchrono.comm_logs.createCreate communication (phone call) logswrite
  • drchrono.comm_logs.getRetrieve an existing communication (phone call) logsread
  • drchrono.comm_logs.listRetrieve or search communicatioin (phone call) logsread
  • drchrono.comm_logs.replaceUpdate an existing communication (phone call) logs (full replace)write
  • drchrono.comm_logs.updateUpdate an existing communication (phone call) logs (partial)write
Consent forms5
  • drchrono.consent_forms.apply_to_appointmentAssign (apply) a consent form to appointmentwrite
  • drchrono.consent_forms.getRetrieve an existing patient consent formread
  • drchrono.consent_forms.listRetrieve or search patient consent formsread
  • drchrono.consent_forms.unapply_from_appointmentUnassign (unapply) a consent form from appointmentwrite
  • drchrono.consent_forms.updateUpdate an existing patient consent form (partial)write
Custom appointment fields5
  • drchrono.custom_appointment_fields.createCreate custom appointment fieldswrite
  • drchrono.custom_appointment_fields.getRetrieve an existing custom appointment fieldread
  • drchrono.custom_appointment_fields.listRetrieve or search custom appointment fieldsread
  • drchrono.custom_appointment_fields.replaceUpdate an existing custom appointment field (full replace)write
  • drchrono.custom_appointment_fields.updateUpdate an existing custom appointment field (partial)write
Custom demographics5
  • drchrono.custom_demographics.createCreate custom demographics fieldswrite
  • drchrono.custom_demographics.getRetrieve an existing custom demographics fieldread
  • drchrono.custom_demographics.listRetrieve or search custom demographics fieldsread
  • drchrono.custom_demographics.replaceUpdate an existing custom demographics field (full replace)write
  • drchrono.custom_demographics.updateUpdate an existing custom demographics field (partial)write
Offices5
  • drchrono.offices.add_exam_roomAdd an exam room to the officewrite
  • drchrono.offices.getRetrieve an existing officeread
  • drchrono.offices.listRetrieve or search officesread
  • drchrono.offices.replaceUpdate an existing office (full replace)write
  • drchrono.offices.updateUpdate an existing office (partial)write
Patient communications5
  • drchrono.patient_communications.createCreate patient communication for CQMwrite
  • drchrono.patient_communications.getRetrieve an existing patient communication for CQMread
  • drchrono.patient_communications.listRetrieve or search patient communications for CQMread
  • drchrono.patient_communications.replaceUpdate an existing patient communication for CQM (full replace)write
  • drchrono.patient_communications.updateUpdate an existing patient communication for CQM (partial)write
Patient flag types5
  • drchrono.patient_flag_types.createCreate patient flag typeswrite
  • drchrono.patient_flag_types.getRetrieve an existing patient flag typeread
  • drchrono.patient_flag_types.listRetrieve or search patient flag typesread
  • drchrono.patient_flag_types.replaceUpdate an existing patient flag type (full replace)write
  • drchrono.patient_flag_types.updateUpdate an existing patient flag type (partial)write
Patient interventions5
  • drchrono.patient_interventions.createCreate patient intervention for CQMwrite
  • drchrono.patient_interventions.getRetrieve an existing patient intervention for CQMread
  • drchrono.patient_interventions.listRetrieve or search patient interventions for CQMread
  • drchrono.patient_interventions.replaceUpdate an existing patient intervention for CQM (full replace)write
  • drchrono.patient_interventions.updateUpdate an existing patient intervention for CQM (partial)write
Patient messages5
  • drchrono.patient_messages.createCreate patient messageswrite
  • drchrono.patient_messages.getRetrieve patient messages by IDread
  • drchrono.patient_messages.listRetrieve patient messagesread
  • drchrono.patient_messages.replaceReplace patient messages by ID (full replace)write
  • drchrono.patient_messages.updateUpdate patient messages by ID (partial)write
Patient physical exams5
  • drchrono.patient_physical_exams.createCreate patient physical exam for CQMwrite
  • drchrono.patient_physical_exams.getRetrieve an existing patient physical exam for CQMread
  • drchrono.patient_physical_exams.listRetrieve or search patient physical exams for CQMread
  • drchrono.patient_physical_exams.replaceUpdate an existing patient physical exam for CQM (full replace)write
  • drchrono.patient_physical_exams.updateUpdate an existing patient physical exam for CQM (partial)write
Patient risk assessments5
  • drchrono.patient_risk_assessments.createCreate patient risk assessmentswrite
  • drchrono.patient_risk_assessments.getRetrieve patient risk assessments by IDread
  • drchrono.patient_risk_assessments.listRetrieve patient risk assessmentsread
  • drchrono.patient_risk_assessments.replaceReplace patient risk assessments by ID (full replace)write
  • drchrono.patient_risk_assessments.updateUpdate patient risk assessments by ID (partial)write
Patient vaccine records5
  • drchrono.patient_vaccine_records.createCreate patient vaccine recordswrite
  • drchrono.patient_vaccine_records.getRetrieve an existing patient vaccine recordsread
  • drchrono.patient_vaccine_records.listRetrieve or search patient vaccine recordsread
  • drchrono.patient_vaccine_records.replaceUpdate an existing patient vaccine records (full replace)write
  • drchrono.patient_vaccine_records.updateUpdate an existing patient vaccine records (partial)write
Problems5
  • drchrono.problems.createCreate patient problemswrite
  • drchrono.problems.getRetrieve an existing patient problemsread
  • drchrono.problems.listRetrieve or search patient problemsread
  • drchrono.problems.replaceUpdate an existing patient problems (full replace)write
  • drchrono.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.