Connectors · Accounting & finance
Open Dental MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Open Dental and the rest of your systems. It gives your agent 393 Open Dental actions (182 reads, 171 writes and 40 that wait for a confirmation) and holds the Open Dental credential itself, so the agent never does. It paces Open Dental's limits and records every call.
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: "open_dental.patients.simple", intent: "check which Open Dental account is connected"}# Patients GET Simple · read · 1 upstream call- 393actionsin one signed file
- 182readlook, never change
- 171writecreate and update
- 40wait for a yesdestructive, confirmed first
Set up
Connect Open Dental 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 Open Dental.
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
developer_keyOpen Dental Developer API key (from the Open Dental Developer Portal)customer_keyCustomer API key for this dental office, generated in the Developer Portal and enabled by the office in Setup >…
account { op: "connections.requirements", service: "open_dental" } # 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: "open_dental.patients.simple" }# patients get simple · read · 1 upstream callcheck { action: "open_dental.patients.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Open Dental at a glance
- Sign-in
- API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
developer_keycustomer_key- Limits we pace to
- 60 calls a minute, per connection
- API covered
- Open Dental API v1 (https://api.opendental.com/api/v1)
api.opendental.com/api/v1 - Built from
- Open Dental's documentation, read 23 October 2026opendental.comopendental.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- Not cached: every read goes to the vendor
- Shared entities
- 5, so ask can line Open Dental up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Open Dental.
393 actions in 107 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 182readlook, never change
- 171writecreate and update
- 40destructivewait for a confirmation
Appointments
146 read · 8 write · 0 destructive
Appointments GET ASAP · Appointments POST (create) · Appointments POST Planned · Appointments POST SchedulePlanned
Procedurelogs
114 read · 5 write · 2 destructive
ProcedureLogs POST (create) · ProcedureLogs POST GroupNote · ProcedureLogs POST InsuranceHistory · ProcedureLogs GET GroupNotes
Documents
102 read · 7 write · 1 destructive
Documents POST DownloadMount · Documents POST DownloadSftp · Documents POST SetByUrl · Documents POST Thumbnails
Claimprocs
92 read · 6 write · 1 destructive
ClaimProcs POST InsAdjust · ClaimProcs POST PendingSupplemental · ClaimProcs POST Supplemental · ClaimProcs GET (multiple)
Claims
72 read · 4 write · 1 destructive
Claims POST (create) · Claims GET (multiple) · Claims GET (single) · Claims PUT (update)
Claimpayments
62 read · 3 write · 1 destructive
ClaimPayments POST · ClaimPayments POST Batch · ClaimPayments GET (multiple) · ClaimPayments GET (single)
Payplans
62 read · 4 write · 0 destructive
PayPlans POST (create) · PayPlans POST Dynamic · PayPlans GET (multiple) · PayPlans GET (single)
Recalls
62 read · 4 write · 0 destructive
Recalls POST (create) · Recalls GET · Recalls GET List · Recalls PUT (update)
99 more areas · 324 actions
- Allergies 5
- Apptfields 5
- Benefits 5
- Codegroups 5
- Covspans 5
- Definitions 5
- Deposits 5
- Diseases 5
- Employers 5
- Fees 5
- Guardians 5
- Inssubs 5
- Labcases 5
- Medicationpats 5
- Medications 5
- Patfields 5
- Patients 5
- Payments 5
- Payplanlinks 5
- Perioexams 5
- Schedules 5
- Treatplans 5
- Vitalsigns 5
- Allergydefs 4
- Apptfielddefs 4
- Carriers 4
- Commlogs 4
- Covcats 4
- Discountplans 4
- Discountplansubs 4
- Employees 4
- Eobattaches 4
- Insplans 4
- Laboratories 4
- Labturnarounds 4
- Patfielddefs 4
- Patplans 4
- Patrestrictions 4
- Payplancharges 4
- Periomeasures 4
- Procedurecodes 4
- Providers 4
- Refattaches 4
- Referrals 4
- Statements 4
- Subscriptions 4
- Substitutionlinks 4
- Tasknotes 4
- Tasks 4
- Toothinitials 4
- Accountmodules 3
- Adjustments 3
- Asapcomms 3
- Autonotecontrols 3
- Autonotes 3
- Chartmodules 3
- Claimtrackings 3
- Diseasedefs 3
- Feescheds 3
- Insverifies 3
- Patientnotes 3
- Popups 3
- Proctps 3
- Sheetfields 3
- Sheets 3
- Treatplanattaches 3
- Userods 3
- Appointmenttypes 2
- Claimforms 2
- Clinics 2
- Clockevents 2
- Ehrpatients 2
- Grouppermissions 2
- Operatories 2
- Paysplits 2
- Pharmacies 2
- Procnotes 2
- Queries 2
- Quickpastecats 2
- Quickpastenotes 2
- Recalltypes 2
- Reports 2
- Rxpats 2
- Sheetdefs 2
- Sheetfielddefs 2
- Computers 1
- Etransmessagetexts 1
- Etranss 1
- Familymodules 1
- Histappointments 1
- Patientraces 1
- Preferences 1
- Scheduleops 1
- Securitylogs 1
- Securityperms 1
- Signalods 1
- Tasklists 1
- Usergroupattaches 1
- Usergroups 1
Top actions
The Open Dental API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 20 of Open Dental's 20 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
open_dental.patients.simplePatients GET Simple | Gets a list of patients. | read | crm.contact.list177 connectors |
open_dental.employers.listEmployers GET (multiple) | Gets a list of employers. | read | crm.company.list162 connectors |
open_dental.userods.listUserods GET | Gets a list of users (called userod since "user" is a reserved word in mysql). | read | identity.user.list474 connectors |
open_dental.patients.createPatients POST (create) | The only required fields are LName and FName. | write | crm.contact.create161 connectors |
open_dental.employers.createEmployers POST (create) | Creates a new employer. | write | crm.company.create142 connectors |
open_dental.employees.listEmployees GET (multiple) | Gets a list of employees. | read | hr.employee.list61 connectors |
open_dental.tasks.listTasks GET (multiple) | Get a list of tasks that meet a set of search criteria. | read | work.task.list122 connectors |
open_dental.employers.deleteEmployers DELETE | Deletes an employer. | destructive | crm.company.delete119 connectors |
open_dental.userods.createUserods POST (create) | Userods POST (create). | write | identity.user.create262 connectors |
open_dental.employees.createEmployees POST (create) | Creates a new employee. | write | hr.employee.create51 connectors |
open_dental.tasks.createTasks POST (create) | Creates a new task. | write | work.task.create127 connectors |
open_dental.fees.listFees GET (multiple) | Gets a list of fees. | read | this connector |
Try it
Prompts to paste into Claude.
Each one names the Open Dental actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which Open Dental tasks are overdue, and who owns each one?
calls
open_dental.tasks.list - Writewrite
Patients POST (create) in Open Dental. Show me exactly what you will send before you save it.
calls
open_dental.patients.create - Across systemsread
Which Open Dental companies have invoices in ConnectWise PSA, and how many each?
calls
open_dental.employers.listconnectwise_manage.invoices.list
Across your systems
Open Dental, joined to the rest of your business.
One ask fetches from Open Dental and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which Open Dental companies have invoices in ConnectWise PSA, and how many each?
open_dental.employers.list+connectwise_manage.invoices.list, oncrm.company· ConnectWise PSAWhich Open Dental companies have tickets in HubSpot CRM, and how many each?
open_dental.employers.list+hubspot_crm.tickets.list, oncrm.company· HubSpot CRM
identity.user 517crm.company 227crm.contact 192work.task 105hr.employee 63ask { intent: "which Open Dental companies have invoices in ConnectWise PSA, and how many each", steps: [ { action: "open_dental.employers.list", as: "co", input: {}, limit: 100, max_pages: 5 }, { action: "connectwise_manage.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 }, { join: { left: "co", right: "inv", on: "crm.company", group_by: "co.name", select: ["co.name", "count(inv.id) as invoices"] } } ]}Governance for Open Dental
Destructive actions wait for a yes.
40 Open Dental actions are destructive. The first 10:
- Employers DELETE
open_dental.employers.delete - Fees DELETE
open_dental.fees.delete - Claims DELETE
open_dental.claims.delete - InsSubs DELETE
open_dental.inssubs.delete - ProcTPs DELETE
open_dental.proctps.delete - Benefits DELETE
open_dental.benefits.delete - CovSpans DELETE
open_dental.covspans.delete - Deposits DELETE
open_dental.deposits.delete - Diseases DELETE
open_dental.diseases.delete - LabCases DELETE
open_dental.labcases.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.
Employers DELETE?
intent: the user asked me to employers DELETE
account { op: "keys.create", name: "open-dental-agent", allowed_actions: ["open_dental.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "open_dental.employers.delete", approver: "[email protected]" }, { match: "open_dental.fees.delete", approver: "[email protected]" }, { match: "open_dental.claims.delete", approver: "[email protected]" } ]}Cost
What Open Dental costs on actionlake.
Every Open Dental action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Open Dental 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 393 Open Dental actions
- 393actions pageeach page of a long list is one call
- 0reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Open Dental action.
393 actions by area: the id your agent calls, what it does, and its effect.
Appointments14
open_dental.appointments.asapAppointments GET ASAPreadopen_dental.appointments.createAppointments POST (create)writeopen_dental.appointments.create_plannedAppointments POST Plannedwriteopen_dental.appointments.create_schedule_plannedAppointments POST SchedulePlannedwriteopen_dental.appointments.create_web_schedAppointments POST WebSchedwriteopen_dental.appointments.getAppointments GET (single)read- and 8 more in this area
Procedurelogs11
open_dental.procedurelogs.createProcedureLogs POST (create)writeopen_dental.procedurelogs.create_group_noteProcedureLogs POST GroupNotewriteopen_dental.procedurelogs.create_insurance_historyProcedureLogs POST InsuranceHistorywriteopen_dental.procedurelogs.group_notesProcedureLogs GET GroupNotesreadopen_dental.procedurelogs.deleteProcedureLogs DELETEdestructiveopen_dental.procedurelogs.delete_group_noteProcedureLogs DELETE GroupNotedestructive- and 5 more in this area
Documents10
open_dental.documents.create_download_mountDocuments POST DownloadMountwriteopen_dental.documents.create_download_sftpDocuments POST DownloadSftpwriteopen_dental.documents.create_set_by_urlDocuments POST SetByUrlwriteopen_dental.documents.create_thumbnailsDocuments POST Thumbnailswriteopen_dental.documents.create_uploadDocuments POST Uploadwriteopen_dental.documents.create_upload_sftpDocuments POST UploadSftpwrite- and 4 more in this area
Claimprocs9
open_dental.claimprocs.create_ins_adjustClaimProcs POST InsAdjustwriteopen_dental.claimprocs.create_pending_supplementalClaimProcs POST PendingSupplementalwriteopen_dental.claimprocs.create_supplementalClaimProcs POST Supplementalwriteopen_dental.claimprocs.listClaimProcs GET (multiple)readopen_dental.claimprocs.deleteClaimProcs DELETEdestructiveopen_dental.claimprocs.getClaimProcs GET (single)read- and 3 more in this area
Claims7
open_dental.claims.createClaims POST (create)writeopen_dental.claims.getClaims GET (single)readopen_dental.claims.listClaims GET (multiple)readopen_dental.claims.updateClaims PUT (update)writeopen_dental.claims.deleteClaims DELETEdestructiveopen_dental.claims.update_splitClaims PUT Splitwrite- and 1 more in this area
Claimpayments6
open_dental.claimpayments.createClaimPayments POSTwriteopen_dental.claimpayments.create_batchClaimPayments POST Batchwriteopen_dental.claimpayments.getClaimPayments GET (single)readopen_dental.claimpayments.listClaimPayments GET (multiple)readopen_dental.claimpayments.deleteClaimPayments DELETEdestructiveopen_dental.claimpayments.updateClaimPayments PUTwrite
Payplans6
open_dental.payplans.createPayPlans POST (create)writeopen_dental.payplans.create_dynamicPayPlans POST Dynamicwriteopen_dental.payplans.getPayPlans GET (single)readopen_dental.payplans.listPayPlans GET (multiple)readopen_dental.payplans.update_closePayPlans PUT Closewriteopen_dental.payplans.update_dynamicPayPlans PUT Dynamicwrite
Recalls6
open_dental.recalls.createRecalls POST (create)writeopen_dental.recalls.listRecalls GETreadopen_dental.recalls.recall_listRecalls GET Listreadopen_dental.recalls.updateRecalls PUT (update)writeopen_dental.recalls.update_statusRecalls PUT Statuswriteopen_dental.recalls.update_switch_typeRecalls PUT SwitchTypewrite
Allergies5
open_dental.allergies.createAllergies POSTwriteopen_dental.allergies.getAllergies GET (single)readopen_dental.allergies.listAllergies GET (multiple)readopen_dental.allergies.updateAllergies PUTwriteopen_dental.allergies.deleteAllergies DELETEdestructive
Apptfields5
open_dental.apptfields.createApptFields POST (create)writeopen_dental.apptfields.getApptFields GET (single)readopen_dental.apptfields.listApptFields GET (multiple)readopen_dental.apptfields.updateApptFields PUTwriteopen_dental.apptfields.deleteApptFields DELETEdestructive
Benefits5
open_dental.benefits.createBenefits POST (create)writeopen_dental.benefits.getBenefits GET (single)readopen_dental.benefits.listBenefits GET (multiple)readopen_dental.benefits.updateBenefits PUT (update)writeopen_dental.benefits.deleteBenefits DELETEdestructive
Codegroups5
open_dental.codegroups.createCodeGroups POST (create)writeopen_dental.codegroups.getCodeGroups GET (single)readopen_dental.codegroups.listCodeGroups GET (multiple)readopen_dental.codegroups.updateCodeGroups PUT (update)writeopen_dental.codegroups.deleteCodeGroups DELETEdestructive
Covspans5
open_dental.covspans.createCovSpans POST (create)writeopen_dental.covspans.getCovSpans GET (single)readopen_dental.covspans.listCovSpans GET (multiple)readopen_dental.covspans.updateCovSpans PUT (update)writeopen_dental.covspans.deleteCovSpans DELETEdestructive
Definitions5
open_dental.definitions.createDefinitions POST (create)writeopen_dental.definitions.def_cat_optionsDefinitions GET DefCatOptionsreadopen_dental.definitions.getDefinitions GET (single)readopen_dental.definitions.listDefinitions GET (multiple)readopen_dental.definitions.updateDefinitions PUTwrite
Deposits5
open_dental.deposits.createDeposits POSTwriteopen_dental.deposits.getDeposits GET (single)readopen_dental.deposits.listDeposits GET (multiple)readopen_dental.deposits.updateDeposits PUTwriteopen_dental.deposits.deleteDeposits DELETEdestructive
Diseases5
open_dental.diseases.createDiseases POSTwriteopen_dental.diseases.getDiseases GET (single)readopen_dental.diseases.listDiseases GET (multiple)readopen_dental.diseases.updateDiseases PUTwriteopen_dental.diseases.deleteDiseases DELETEdestructive
Employers5
open_dental.employers.createEmployers POST (create)writeopen_dental.employers.getEmployers GET (single)readopen_dental.employers.listEmployers GET (multiple)readopen_dental.employers.updateEmployers PUT (update)writeopen_dental.employers.deleteEmployers DELETEdestructive
Fees5
open_dental.fees.createFees POST (create)writeopen_dental.fees.getFees GET (single)readopen_dental.fees.listFees GET (multiple)readopen_dental.fees.updateFees PUT (update)writeopen_dental.fees.deleteFees DELETEdestructive
Guardians5
open_dental.guardians.createGuardians POST (create)writeopen_dental.guardians.getGuardians GET (single)readopen_dental.guardians.listGuardians GET (multiple)readopen_dental.guardians.updateGuardians PUT (update)writeopen_dental.guardians.deleteGuardians DELETEdestructive
Inssubs5
open_dental.inssubs.createInsSubs POST (create)writeopen_dental.inssubs.getInsSubs GET (single)readopen_dental.inssubs.listInsSubs GET (multiple)readopen_dental.inssubs.updateInsSubs PUT (update)writeopen_dental.inssubs.deleteInsSubs DELETEdestructive
Labcases5
open_dental.labcases.createLabCases POST (create)writeopen_dental.labcases.getLabCases GET (single)readopen_dental.labcases.listLabCases GET (multiple)readopen_dental.labcases.updateLabCases PUT (update)writeopen_dental.labcases.deleteLabCases DELETEdestructive
Medicationpats5
open_dental.medicationpats.createMedicationPats POSTwriteopen_dental.medicationpats.getMedicationPats GET (single)readopen_dental.medicationpats.listMedicationPats GET (multiple)readopen_dental.medicationpats.updateMedicationPats PUTwriteopen_dental.medicationpats.deleteMedicationPats DELETEdestructive
Medications5
open_dental.medications.createMedications POSTwriteopen_dental.medications.getMedications GET (single)readopen_dental.medications.listMedications GET (multiple)readopen_dental.medications.updateMedications PUTwriteopen_dental.medications.deleteMedications DELETEdestructive
Patfields5
open_dental.patfields.createPatFields POST (create)writeopen_dental.patfields.getPatFields GET (single)readopen_dental.patfields.listPatFields GET (multiple)readopen_dental.patfields.updatePatFields PUTwriteopen_dental.patfields.deletePatFields DELETEdestructive
Patients5
open_dental.patients.createPatients POST (create)writeopen_dental.patients.getPatients GET (single)readopen_dental.patients.simplePatients GET Simplereadopen_dental.patients.updatePatients PUT (update)writeopen_dental.patients.listPatients GET (multiple)read
Payments5
open_dental.payments.createPayments POST (create)writeopen_dental.payments.listPayments GETreadopen_dental.payments.updatePayments PUT (update)writeopen_dental.payments.update_partialPayments PUT Partialwriteopen_dental.payments.create_refundPayments POST Refunddestructive
Payplanlinks5
open_dental.payplanlinks.createPayPlanLinks POST (create)writeopen_dental.payplanlinks.getPayPlanLinks GET (single)readopen_dental.payplanlinks.listPayPlanLinks GET (multiple)readopen_dental.payplanlinks.updatePayPlans PUT (update)writeopen_dental.payplanlinks.deletePayPlanLinks DELETEdestructive
Perioexams5
open_dental.perioexams.createPerioExams POSTwriteopen_dental.perioexams.getPerioExams GET (single)readopen_dental.perioexams.listPerioExams GET (multiple)readopen_dental.perioexams.updatePerioExams PUT (update)writeopen_dental.perioexams.deletePerioExams DELETEdestructive
Schedules5
open_dental.schedules.create_blockoutSchedules POST Blockoutwriteopen_dental.schedules.getSchedules GET (single)readopen_dental.schedules.listSchedules GET (multiple)readopen_dental.schedules.update_blockoutSchedules PUT Blockoutwriteopen_dental.schedules.delete_blockoutSchedules DELETE Blockoutdestructive
Treatplans5
open_dental.treatplans.createTreatPlans POST (create)writeopen_dental.treatplans.create_savedTreatPlans POST Savedwriteopen_dental.treatplans.listTreatPlans GETreadopen_dental.treatplans.updateTreatPlans PUT (update)writeopen_dental.treatplans.deleteTreatPlans DELETEdestructive
Vitalsigns 5Allergydefs 4Apptfielddefs 4Carriers 4Commlogs 4Covcats 4Discountplans 4Discountplansubs 4Employees 4Eobattaches 4Insplans 4Laboratories 4Labturnarounds 4Patfielddefs 4Patplans 4Patrestrictions 4Payplancharges 4Periomeasures 4Procedurecodes 4Providers 4Refattaches 4Referrals 4Statements 4Subscriptions 4Substitutionlinks 4Tasknotes 4Tasks 4Toothinitials 4Accountmodules 3Adjustments 3Asapcomms 3Autonotecontrols 3Autonotes 3Chartmodules 3Claimtrackings 3Diseasedefs 3Feescheds 3Insverifies 3Patientnotes 3Popups 3Proctps 3Sheetfields 3Sheets 3Treatplanattaches 3Userods 3Appointmenttypes 2Claimforms 2Clinics 2Clockevents 2Ehrpatients 2Grouppermissions 2Operatories 2Paysplits 2Pharmacies 2Procnotes 2Queries 2Quickpastecats 2Quickpastenotes 2Recalltypes 2Reports 2Rxpats 2Sheetdefs 2Sheetfielddefs 2Computers 1Etransmessagetexts 1Etranss 1Familymodules 1Histappointments 1Patientraces 1Preferences 1Scheduleops 1Securitylogs 1Securityperms 1Signalods 1Tasklists 1Usergroupattaches 1Usergroups 1
This index shows a sample of each area. All 393 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.
Questions
The Open Dental MCP server, answered.
Is there an Open Dental MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 393 Open Dental actions across appointments, procedurelogs, documents and claimprocs, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Open Dental.
What do I need to connect Open Dental?
Open Dental Developer API key (from the Open Dental Developer Portal) and Customer API key for this dental office, generated in the Developer Portal and enabled by the office in Setup >…. The free call account { op: "connections.requirements", service: "open_dental" } lists exactly what to paste.
Can an AI agent delete or change things in Open Dental?
Only if its key allows it, and only with an explicit confirmation. 40 Open Dental actions are destructive, including employers DELETE, fees DELETE and claims DELETE. 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 Open Dental API limit?
actionlake paces every call to the limits in the Open Dental service file: 60 calls a minute per connection.
What does an Open Dental action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (393 Open Dental actions page). Cache hits, searches, dry runs and calls Open Dental 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 Open Dental API does it cover?
The Open Dental API v1 (https://api.opendental.com/api/v1) at api.opendental.com/api/v1. It is built from Open Dental's documentation as read on 23 October 2026. 393 actions in 107 areas, each one in the signed service file (version 1.0.0).
Can I combine Open Dental with my other systems?
Yes. ask joins Open Dental to ConnectWise PSA or HubSpot CRM on the same customer and returns the answer rather than every row. Open Dental maps crm.company, which 227 other connectors also map.
Does actionlake keep my Open Dental data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Open Dental responses are not cached. 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 Open Dental 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 Open Dental today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.