# drchrono MCP connector

The drchrono connector brings day sheet charges, claim billing notes, signed consent forms, lab orders and clinical notes into Elaichi, so Claude, ChatGPT, Cursor and the Elaichi Agent can work with them inside each person's own drchrono access.

Source: https://elaichi.ai/connectors/drchrono/

## Facts

| | |
| --- | --- |
| Application | drchrono |
| Category | Healthcare |
| AI tools | 329 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once drchrono is connected

- List today's day sheet charges that still need a claim billing note
- Create a lab order for this afternoon's patient and confirm the sublab
- Which signed consent forms are missing for tomorrow's new patients?

## Connect drchrono in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick drchrono.
2. Optionally set Share with, then press Connect.
3. Supply your own drchrono app, then approve. drchrono needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which drchrono tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## drchrono MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## drchrono MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## drchrono MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect drchrono to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Every scope the client asks for starts ticked except "Delete data and remove access", which you tick yourself. Calling a drchrono tool needs "Run your connected tools". Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with drchrono through Elaichi

### Review the day sheet before claims go out

Billing. Pull the day's charges from drchrono and ask which ones still need a claim billing note before the batch is submitted. Add the missing notes from the same conversation.

### Document a claim without opening the chart

Billing. Add a claim billing note in drchrono after a payer call, with the reference number and what was agreed, so the next person working the claim sees the history.

### Check consent forms ahead of tomorrow's visits

Front desk. List the signed consent forms on file in drchrono and spot the new patients who have not signed yet, then record a signed form as soon as it comes in.

### Place and update lab orders after a visit

Clinical. Create a lab order in drchrono while the patient is still in the room, then update it or cancel it later if the plan changes.

### Look up custom vitals captured at intake

Nursing. Ask for the custom vitals recorded in drchrono for a patient so the clinician has the readings in front of them without scrolling through the chart.

### Keep appointment fields consistent across the practice

Practice management. List the custom appointment fields set up in drchrono, add a new one for a referral source or visit reason, and tidy the ones that no longer match how the front desk books.

## Elaichi vs Zapier MCP vs Composio for drchrono

All three can connect drchrono to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over drchrono tools | Allow or restrict single drchrono tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per drchrono call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect drchrono to Claude?

First connect drchrono in Elaichi: drchrono asks you to register an OAuth application inside your drchrono account, so one person brings that client ID and secret once, then signs in to drchrono as themselves. After that nobody else on the team handles a client ID or secret again. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Claude asks you to sign in to Elaichi and drchrono is ready to use.

### Does drchrono work with ChatGPT and Cursor as well as Claude?

Yes. Once drchrono is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect drchrono once and every client picks it up.

### What can an AI agent actually do with my drchrono data?

It can list the day sheet charges for a date, read and add claim billing notes, check which signed consent forms are on file, create, update or cancel lab orders, read clinical notes lists and look up custom vitals and custom appointment fields in drchrono. Short, concrete asks work best, such as asking for today's charges without a billing note rather than a long paragraph. Everything it does runs as the person who signed in to drchrono.

### Does connecting drchrono give the AI access to every patient and every chart?

No. Every request to drchrono runs with the access of the person who signed in, so the AI sees the practices, patients and records that person can already open in drchrono and nothing more. Elaichi can narrow that further with restrictions, and it can never widen it beyond what drchrono itself allows that person.

### Can my team share one drchrono connection?

Yes. One person connects drchrono in Elaichi and shares it with a team, and nobody else ever handles the drchrono client ID or secret. Each teammate still signs in to drchrono as themselves, so the audit log names the actual person behind every lab order or billing note.

### Can I stop an agent from deleting or changing things in drchrono?

Yes. Restrictions in Elaichi work per action, so you can allow reading lab orders in drchrono while blocking the ones that update or delete them. A restricted action is left out of what the AI client can call, so it cannot be used however the prompt is worded.

### What happens to a drchrono connection when someone leaves?

Offboarding that person in Elaichi ends their access to drchrono through every client at once. A shared drchrono connection keeps working for everyone else on the team. If you want drchrono gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client.

### Does the drchrono MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. drchrono is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for drchrono?

Yes. Both let Claude, ChatGPT or Cursor use drchrono. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every drchrono call.

### How is Elaichi different from Composio for drchrono?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to drchrono: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 329 drchrono tools

Every tool below is callable through https://api.elaichi.ai/mcp once drchrono is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all drchrono day sheet charges** (List). Retrieve daysheet charges report for a given date range. The vendor spec documents no response body. Required: start_date, end_date.
- **List all drchrono claim billing notes** (List). Retrieve or search billing notes. Returns: id, appointment, text, created_at, created_by.
- **Create a drchrono claim billing note** (Create). Create a new billing note. Returns: id, appointment, text, created_at, created_by. Required: appointment.
- **Get single drchrono claim billing note by ID** (Get). Retrieve an existing billing note. Returns: id, appointment, text, created_at, created_by. Required: id.
- **List all drchrono signed consent forms** (List). Retrieve or search signed consent forms. Returns: id, patient, appointment, date_signed, archived, signature_file, updated_at, consent_form.
- **Create a drchrono signed consent form** (Create). Create a signed consent form record for a patient and consent form. Returns: id, patient, appointment, date_signed, archived, signature_file, updated_at, consent_form. Required: patient, appointment, consent_form.
- **Get single drchrono signed consent form by ID** (Get). Retrieve a single signed consent form record by id. Returns: id, patient, appointment, date_signed, archived, signature_file, updated_at, consent_form. Required: id.
- **Drchrono signed consent forms bulk update** (Update). Update an existing consent form signature. Returns an empty 204 response on success. Required: id.
- **List all drchrono custom appointment fields** (List). Retrieve or search custom appointment fields. Returns: id, doctor, archived, created_at, updated_at, order, field_desc, field_name.
- **Create a drchrono custom appointment field** (Create). Create custom appointment fields. Returns: id, doctor, archived, created_at, updated_at, order, field_desc, field_name.
- **Get single drchrono custom appointment field by ID** (Get). Retrieve an existing custom appointment field. Returns: id, doctor, archived, created_at, updated_at, order, field_desc, field_name. Required: id.
- **Update a drchrono custom appointment field by ID** (Update). Update an existing custom appointment field. Full update (PUT): send every required field. Returns an empty 204 response on success. Required: id.
- **Drchrono custom appointment fields partial update** (Update). Update an existing custom appointment field. Partial update (PATCH): only the fields you send change. Returns an empty 204 response on success. Required: id.
- **Get single drchrono lab order by ID** (Get). Retrieve an existing lab order. Returns: id, patient, doctor, status, documents, timestamp, notes, accession_number. Required: id.
- **Update a drchrono lab order by ID** (Update). Update an existing lab order. Full update (PUT): send every required field. Returns an empty 204 response on success. Required: id, patient, doctor, sublab.
- **Delete a drchrono lab order by ID** (Delete). Delete an existing lab order. Returns an empty 204 response on success. Required: id.
- **List all drchrono lab orders** (List). Retrieve or search lab orders. Returns: id, patient, doctor, status, documents, timestamp, notes, accession_number.
- **Create a drchrono lab order** (Create). Create a lab order so the doctor can see it in drchrono; send result PDFs via lab_documents and result data via lab_results. Returns: id, patient, doctor, status, documents, timestamp, notes, accession_number. Required: patient, doctor, sublab.
- **Drchrono lab orders partial update** (Update). Update an existing lab order. Partial update (PATCH): only the fields you send change. Returns an empty 204 response on success. Required: id.
- **List all drchrono clinical notes lists** (List). Retrieve or search clinical notes in batches. Results returned in order of ID. Returns: status, pagination, results, uuid.
- **Create a drchrono clinical notes list** (Create). Create clinical note list request. Use the UUID returned in the response to retrieve the batch of records. Results returned in order of ID. Returns: status, uuid, description.
- **Get single drchrono custom vital by ID** (Get). Retrieve an existing custom vital type. Returns: id, name, doctor, archived, description, data_type, is_fraction_field, fraction_delimiter. Required: id.
- **List all drchrono custom vitals** (List). Retrieve or search custom vital types. Returns: id, name, doctor, archived, description, data_type, is_fraction_field, fraction_delimiter.
- **Get single drchrono sublab by ID** (Get). Retrieve an existing sub vendor. Returns: id, name, vendor_name, facility_code. Required: id.
- **Update a drchrono sublab by ID** (Update). Update an existing sub vendor. Full update (PUT): send every required field. Returns an empty 204 response on success. Required: id, facility_code, name.
- **Delete a drchrono sublab by ID** (Delete). Delete an existing sub vendor. Returns an empty 204 response on success. Required: id.
- **List all drchrono sublabs** (List). Retrieve or search sub vendors. Returns: id, name, vendor_name, facility_code.
- **Create a drchrono sublab** (Create). Create a sub-vendor. Returns: id, name, vendor_name, facility_code. Required: facility_code, name.
- **Drchrono sublabs partial update** (Update). Update an existing sub vendor. Partial update (PATCH): only the fields you send change. Returns an empty 204 response on success. Required: id.
- **List all drchrono patient qrda 1 s** (List). Retrieve patient QRDA1. The vendor spec documents no response body. Required: patient_id.
- **List all drchrono problems** (List). Retrieve or search patient problems. Returns: id, name, patient, doctor, appointment, status, category, icd_code.
- **Create a drchrono problem** (Create). Create patient problems. Returns: id, name, patient, doctor, appointment, status, category, icd_code. Required: doctor, patient.
- **Get single drchrono problem by ID** (Get). Retrieve an existing patient problem. Returns: id, name, patient, doctor, appointment, status, category, icd_code. Required: id.
- **Update a drchrono problem by ID** (Update). Update an existing patient problem. Full update (PUT): send every required field. Returns an empty 204 response on success. Required: id, doctor, patient.
- **Drchrono problems partial update** (Update). Update an existing patient problem. Partial update (PATCH): only the fields you send change. Returns an empty 204 response on success. Required: id.
- **List all drchrono staffs** (List). List staff members. Returns: id, doctor, first_name, last_name, username, user_id, created_at, updated_at.
- **Get single drchrono staff by ID** (Get). Get a staff member by id. Returns: id, doctor, first_name, last_name, username, user_id, created_at, updated_at. Required: id.
- **Get single drchrono patient message by ID** (Get). Get a patient message by id. Returns: id, patient, doctor, body, attachments, thread, created_at, updated_at. Required: id.
- **Update a drchrono patient message by ID** (Update). Update a patient message by id. Full update (PUT): send every required field. Returns an empty 204 response on success. Required: id, patient, doctor, subject.
- **List all drchrono patient messages** (List). List patient messages. Returns: id, patient, doctor, body, attachments, thread, created_at, updated_at.
- **Create a drchrono patient message** (Create). Create a patient message. Returns: id, patient, doctor, body, attachments, thread, created_at, updated_at. Required: patient, doctor, subject.
- **Drchrono patient messages partial update** (Update). Update a patient message by id. Partial update (PATCH): only the fields you send change. Returns an empty 204 response on success. Required: id.
- **List all drchrono user groups** (List). Retrieve or search user groups. Returns: id, name, archived, practice_group, created_at, updated_at, members.
- **Get single drchrono user group by ID** (Get). Retrieve an existing user group. Returns: id, name, archived, practice_group, created_at, updated_at, members. Required: id.
- **List all drchrono eligibility checks** (List). Retrieve or search past eligibility checks for patient. Returns: id, patient, appointment, coverage_subscriber, eligibility, payer_name, coverage_details, updated_at.
- **Get single drchrono eligibility check by ID** (Get). Retrieve an existing past eligibility check. Returns: id, patient, appointment, coverage_subscriber, eligibility, payer_name, coverage_details, updated_at. Required: id.
- **Get single drchrono doctor work schedule by ID** (Get). Retrieve a work schedule for the doctor. Returns: id, doctor, work_days, office. Required: id.
- **Update a drchrono doctor work schedule by ID** (Update). Update an existing doctor's entire work schedule. Full update (PUT): send every required field. Returns an empty 204 response on success. Required: id.
- **List all drchrono doctor work schedules** (List). Get the work schedule for the authed doctor's primary office. Returns: id, doctor, work_days, office.
- **Drchrono doctor work schedules partial update** (Update). Update an existing doctor's work schedule. Partial update (PATCH): only the fields you send change. Returns an empty 204 response on success. Required: id.
- ...and 279 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
