Give your agent a program, not a mouse
OpenAdapt makes your computer-use agent better at the entries it repeats. Your agent does a task once; OpenAdapt compiles the run into a program your agent calls as one tool. The program confirms the right record, waits for approval, reads the save back and reports one plain outcome, with no model calls and no screenshots sent.
Three ways OpenAdapt works with your agent
- Tested
Your agent calls OpenAdapt
Your agent picks the program and supplies the values. OpenAdapt makes the entry, checks it and returns one result. Your agent never sees the screens or the typed values. Released; tested on our synthetic sandbox.
- Tested
Your agent shows the task once
OpenAdapt compiles your agent's successful run into a program. A person accepts it, and later entries make no model calls. Released; tested on a recorded agent run in our synthetic clinic app.
- Tested
Check any save
OpenAdapt can read the system's own record to say whether a save by your agent, a script or a person landed. Released; tested on our synthetic apps.
Your agent alone and with OpenAdapt, measured
In our timed referral runs on a test copy of OpenEMR, an AI agent, Claude Sonnet 5.5 (claude-sonnet-5-5), and OpenAdapt both saved 62 of 63 new-patient referrals correctly. OpenAdapt ran the same path every time, sent no screens to a model and cost $0, against about $0.08 a referral for the agent. Medians: 29.7 s for OpenAdapt, 36.5 s for the agent. The full comparison · the demo.
Your agent keeps what it is good at: new tasks, reading a fax, deciding what to enter, showing a fix when the app changes. OpenAdapt takes the repeated entry off the screen and checks every save. What OpenAdapt adds to your agent, row by row.
Who does what, today and with OpenAdapt
| Step | Today | With OpenAdapt | Status |
|---|---|---|---|
| A fax arrives; extract the details | Your agent | Your agent, or OpenAdapt's intake from a PDF, fax image or email | Intake tested on synthetic documents |
| Screen and decide | Your ops team | Your ops team, unchanged | |
| Find the patient; create the chart if new | Clinic staff | OpenAdapt | Recorded on OpenEMR |
| Approve the entry | Clinic staff, on the computer or a paired phone | Tested on our synthetic apps | |
| Save, read back, compare every field | Clinic staff, by eye | OpenAdapt | Recorded on OpenEMR |
| Add the referral entry, a scheduler task, the document | Clinic staff | OpenAdapt | |
| Report the result to your product | Your ops team | OpenAdapt | Tested on one computer |
What your system gets back
One plain result for every request, with what your system should do next. An entry that was done and checked also gets a receipt with no patient details.
| Result | For the chart | Your system |
|---|---|---|
| Done and checked | Saved and read back from the EMR's own data; every check passed. | Store the receipt; mark the referral filed. |
| Stopped before saving | Nothing was written, and the run proved it. | Show the reason. A person decides before anything is sent again. |
| Check the record | A save may have gone through. | Don't send it again. A person checks the chart first. |
Who approves
By default a person at the clinic approves every save. A person can also sign a grant that lets a named agent or system answer saves for one workflow; the result says who approved. Once a workflow passes its readiness test, it can ask a person only about problems.
A pilot with one clinic
Built for production: signed admissions, qualification against your normal and fault cases, a record check on every save, local or in your VPC, and a BAA on Enterprise. We qualify it on your system before it touches a real record.
| In a pilot | |
|---|---|
| You send | The EMR and version, how staff reach it, whether a second way to read the record exists, a recording of one filing on a test patient, and 10 synthetic referrals. |
| We do | Build the program, run the readiness test, and tell you which result that setup can reach. On our own test system, recording, building and a first practice run of an OpenEMR new-patient entry took one day; at a clinic, access to the EMR usually sets the calendar. |
| Success | Criteria you set before the build, such as "every case that should stop, stops; every entry that saves reads back". |
| Price shape | A design pack for one EMR version, then a monthly fee per clinic plus a fee per filing. We quote the numbers for your pilot. |
| Test setup | Test patients or a test copy of the clinic's EMR. Nothing touches a real chart before written go-live approval. |
| If it ends | The engine is open source. You keep the programs and run records. |
Tested so far on OpenEMR, an open-source EMR, with synthetic patients. A commercial EMR is qualified on the clinic's own system before go-live. What we've tested.
What isn't ready yet
- Our hosted service for partner requests has been off since 14 Sep 2026. A pilot today runs on computers at the clinic.
- Sending patient details to the clinic computer without passing through OpenAdapt Cloud.
- Approving several saves at once from your own queue.
- Referral entries, scheduler tasks and attachments; Citrix; any commercial EMR.
For your privacy officer
In a pilot as we'd run it today, your product sends the request with the referral's details through OpenAdapt Cloud to the clinic computer. The clinic computer types in the EMR session, keeps the full run record and shows the approval screen. Results and receipts come back to you with no patient details. We state the hosting region in writing before a pilot; a Canadian option is planned. Security and the data map.
Questions partners ask
What if a clinic's EMR has no second way to read the record?
Then OpenAdapt can type and stop there, but it can't report "Done and checked", and we won't run that program for your requests. We find this out on the first call.
Should we use the EMR's API instead?
Where a clinic's EMR has an approved API for the step, yes. OpenAdapt covers clinics still waiting for API access and the steps an API doesn't reach. See API or screen automation?.
Which price applies to us?
The partner price shape above, quoted for your pilot. The prices on the Pricing page are for clinics and insurers buying directly.
For your engineers
Give your agent OpenAdapt's tools over MCP (Claude Code shown; any MCP client works). The agent lists approved programs, runs one with its values and gets back a status, counts and a short fixed sentence, never screens or typed values. `openadapt agent serve` ships in the openadapt launcher 1.17.0.
claude mcp add openadapt -- uvx --python 3.12 openadapt-agent serveTo compile an agent's run: record the agent's successful run through OpenAdapt's recording tools; the draft program needs an admission by a person, an admitter key, or an agent under a person-signed policy before it runs. To judge a save made by anything else, run openadapt-flow verify-run against the system of record.
The reference execution server in the open-source engine, on one computer: send openadapt.execute-request/v1 to POST /v1/executions, poll GET /v1/executions/{id}, then read GET /v1/executions/{id}/receipt. Its receipts are self-signed with a local key and it has no webhooks. Outcomes: verified (store the receipt), halted_before_effect (resend only after a person decides), reconciliation_required (never resend; a person checks), rejected_policy, failed_platform, rolled_back_verified. Until two known defects are fixed (its catch-all can sign failed_platform after a write may have landed, and a missing transaction outcome maps to halted_before_effect), treat both as reconciliation_required. More in Execute.
Sources
- Referral timing run, local OpenEMR 8.0.0.3 test copy, 14 to 15 Oct 2026 (run data): 8 synthetic referrals, OpenAdapt (a program compiled to find each field by the page's structure, 0 model calls) against Claude Sonnet 5.5 (claude-sonnet-5-5) as a computer-use agent in a capped harness, warm starts, interleaved blocks, each chart read back from the database. Blocks 2 to 10, normal referrals saved correctly: 62 runs each; median 29.7 s (OpenAdapt) and 36.5 s (agent); agent median $0.083 a run at list price. Both 62 of 63 normal referrals correct; on the possible duplicate, no new chart in 9 of 9 for both. Block 1 left out (CPU shared with another process); with it (blocks 1 to 10), 69 of 70 correct for both, 29.7 s and 37.6 s (n=69 each). The same task from the 10 Oct recording without the page's structure: 62 of 63, 38.6 s median, slower than the agent.
- OpenAdapt on OpenEMR 8.0.0.3 (open-source EMR), local test copy, 11 Oct 2026. One program ran over 8 synthetic eReferrals in one batch, with 0 AI model calls. 7 new patients were saved; our test setup read each chart back through the OpenEMR API and database, and 12 of 12 fields matched the referral. The 8th (Rosa Delgado, same name as an existing chart, different birth date) stopped at the EMR's duplicate check; afterwards no new chart existed. The engine labels the saved runs "Finished, not checked" (practice profile) and the stop "Check the record".
See it on your process
Bring one task your team types every day. We'll tell you whether it fits, and what a test on your own system would cover.