Connectors · Industry
Epic on FHIR MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Epic on FHIR and the rest of your systems. It gives your agent 264 Epic on FHIR actions (229 reads and 35 writes) and holds the Epic on FHIR credential itself, so the agent never does. It paces Epic on FHIR's limits and records every call. Connecting Epic on FHIR needs your own Epic on FHIR 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: "epic_fhir.crd_services.discover", intent: "check which Epic on FHIR account is connected"}# List the Coverage Requirements Discovery CDS services (FHIR R4) · read · 1 upstream call- 264actionsin one signed file
- 229readlook, never change
- 35writecreate and update
- 0wait for a yesdestructive, confirmed first
Set up
Connect Epic on FHIR 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 Epic on FHIR.
OAuth 2.0, authorization code. You register your own OAuth app with Epic on FHIR, 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, Epic on FHIR needs an OAuth app of your own, registered in its developer portal. actionlake has no Epic on FHIR 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_idNon-production or production Client ID of your app registered on fhir.epic.com (Build Apps)client_secretThe client secret provisioned for this Epic organization (Build Apps > Review & Manage Downloads)hostWhere your Epic on FHIR lives: your hostinstance_pathWhere your Epic on FHIR lives: your instance path
account { op: "connections.requirements", service: "epic_fhir" } # 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: "epic_fhir.crd_services.discover" }# list the coverage requirements discovery cds services (fhir r4) · read · 1 upstream callcheck { action: "epic_fhir.claims.submit", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Epic on FHIR at a glance
- Sign-in
- OAuth 2.0, authorization code. You register your own OAuth app with Epic on FHIR, 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- Setup fields
hostinstance_path- Limits we pace to
- 10 calls a second, per connection
- API covered
- Epic on FHIR (Epic EHR FHIR R4, STU3 and DSTU2 APIs) API Epic on FHIR, August 2026 release (FHIR R4 4.0.1, STU3 3.0.x, DSTU2 1.0.2), at your Epic on FHIR instance's API base URL, which you enter when connecting
- Built from
- Epic on FHIR's documentation, read 23 October 2026fhir.epic.comfhir.epic.comfhir.epic.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 4 of 229 reads, for up to an hour; a write clears what it affects
- Shared entities
- 3, so ask can line Epic on FHIR up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Epic on FHIR.
264 actions in 70 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 229readlook, never change
- 35writecreate and update
- 0destructivewait for a confirmation
Observations
117 read · 4 write · 0 destructive
Create an Observation (FHIR R4) · Search Observation resources (FHIR R4) · Read an Observation by id (FHIR R4) · Update an Observation (FHIR R4)
Patients
108 read · 2 write · 0 destructive
Create a Patient (FHIR R4) · Match patients against demographics ($match) (FHIR R4) · Search Patient resources (FHIR R4) · Read a Patient by id (FHIR R4)
Document references
96 read · 3 write · 0 destructive
Create a DocumentReference (FHIR R4) · Search DocumentReference resources (FHIR R4) · Read a DocumentReference by id (FHIR R4) · Update a DocumentReference (FHIR R4)
Allergy intolerances
86 read · 2 write · 0 destructive
Create an AllergyIntolerance (FHIR R4) · Search AllergyIntolerance resources (FHIR R4) · Read an AllergyIntolerance by id (FHIR R4) · Search AllergyIntolerance resources (FHIR DSTU2)
Conditions
86 read · 2 write · 0 destructive
Create a Condition (FHIR R4) · Search Condition resources (FHIR R4) · Read a Condition by id (FHIR R4) · Search Condition resources (FHIR DSTU2)
Procedures
86 read · 2 write · 0 destructive
Create a Procedure (FHIR R4) · Search Procedure resources (FHIR R4) · Read a Procedure by id (FHIR R4) · Update a Procedure (FHIR R4)
Devices
76 read · 1 write · 0 destructive
Raise an auxiliary-function (staff duress) notification ($auxiliary-function) (FHIR R4) · Search Device resources (FHIR R4) · Read a Device by id (FHIR R4) · Search Device resources (FHIR DSTU2)
Diagnostic reports
76 read · 1 write · 0 destructive
Search DiagnosticReport resources (FHIR R4) · Read a DiagnosticReport by id (FHIR R4) · Update a DiagnosticReport (FHIR R4) · Search DiagnosticReport resources (FHIR DSTU2)
62 more areas · 196 actions
- Goals 7
- Appointments 6
- Immunizations 6
- Medication statements 6
- Practitioners 6
- Medications 5
- Questionnaires 5
- Binaries 4
- Body structures 4
- Capabilities 4
- Care plans 4
- Claims 4
- Consents 4
- Coverages 4
- Device requests 4
- Device use statements 4
- Encounters 4
- Flags 4
- Immunization recommendations 4
- Lists 4
- Medication administrations 4
- Medication dispenses 4
- Medication requests 4
- Nutrition orders 4
- Practitioner roles 4
- Service requests 4
- Specimens 4
- Communications 3
- Criteria reviews 3
- Endpoints 3
- Family member histories 3
- Locations 3
- Organizations 3
- Questionnaire responses 3
- Review collections 3
- Tasks 3
- Value sets 3
- Accounts 2
- Adverse events 2
- Care teams 2
- CDS services 2
- Concept maps 2
- Contracts 2
- Episode of cares 2
- Explanation of benefits 2
- Groups 2
- Imaging studies 2
- Measure reports 2
- Measures 2
- Media 2
- Medication orders 2
- Procedure requests 2
- Related persons 2
- Request groups 2
- Research studies 2
- Research subjects 2
- Substances 2
- Claim responses 1
- Operations 1
- Provenances 1
- Schedules 1
- Slots 1
Top actions
The Epic on FHIR 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 |
|---|---|---|---|
epic_fhir.locations.searchSearch Location resources (FHIR R4) | Search Location resources; results are Bundle entries. | read | this connector |
epic_fhir.appointments.searchSearch Appointment resources (FHIR R4) | Search Appointment resources; results are Bundle entries. | read | this connector |
epic_fhir.organizations.searchSearch Organization resources (FHIR R4) | Search Organization resources; results are Bundle entries. | read | this connector |
epic_fhir.flags.searchSearch Flag resources (FHIR R4) | Search Flag resources; results are Bundle entries. | read | this connector |
epic_fhir.goals.searchSearch Goal resources (FHIR R4) | Search Goal resources; results are Bundle entries. | read | this connector |
epic_fhir.lists.searchSearch List resources (FHIR R4) | Search List resources; results are Bundle entries. | read | this connector |
epic_fhir.media.searchSearch Media resources (FHIR R4) | Search Media resources; results are Bundle entries. | read | this connector |
epic_fhir.tasks.searchSearch Task resources (FHIR R4) | Search Task resources; results are Bundle entries. | read | this connector |
epic_fhir.claims.searchSearch Claim resources (FHIR R4) | Search Claim resources; results are Bundle entries. | read | this connector |
epic_fhir.claims.submitSubmit a prior authorization request ($submit) (FHIR R4) | Submit a prior authorization request. | write | this connector |
epic_fhir.patients.createCreate a Patient (FHIR R4) | Create a Patient resource from a complete FHIR Patient JSON document. | write | this connector |
epic_fhir.conditions.createCreate a Condition (FHIR R4) | Create a Condition resource from a complete FHIR Condition JSON document. | write | this connector |
Try it
Prompts to paste into Claude.
Each one names the Epic on FHIR actions it will call, so you know what it reads and what it changes before you send it.
- Readread
List the companies in Epic on FHIR and flag likely duplicates by name or domain.
calls
epic_fhir.organizations.search - Writewrite
Submit a prior authorization request ($submit) (FHIR R4) in Epic on FHIR. Show me exactly what you will send before you save it.
calls
epic_fhir.claims.submit - Across systemsread
Which Epic on FHIR companies have invoices in ConnectWise PSA, and how many each?
calls
epic_fhir.organizations.searchconnectwise_manage.invoices.list
Across your systems
Epic on FHIR, joined to the rest of your business.
One ask fetches from Epic on FHIR and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which Epic on FHIR companies have invoices in ConnectWise PSA, and how many each?
epic_fhir.organizations.search+connectwise_manage.invoices.list, oncrm.company· ConnectWise PSAWhich Epic on FHIR companies have invoices in NetSuite, and how many each?
epic_fhir.organizations.search+netsuite.views.invoices, oncrm.company· NetSuite
crm.company 227crm.location 49service.service_appointment 9ask { intent: "which Epic on FHIR companies have invoices in ConnectWise PSA, and how many each", steps: [ { action: "epic_fhir.organizations.search", 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 Epic on FHIR
Every write can wait for a yes.
None of Epic on FHIR's actions is destructive. A key can still be held to reads, capped, and set so a person confirms every write.
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.
account { op: "keys.create", name: "epic-fhir-agent", allowed_actions: ["epic_fhir.*"], cap_calls: 2000, confirm_policy: "human_for_writes"}Cost
What Epic on FHIR costs on actionlake.
Every Epic on FHIR action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Epic on FHIR 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 264 Epic on FHIR actions
- 264actions pageeach page of a long list is one call
- 4reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Epic on FHIR action.
264 actions by area: the id your agent calls, what it does, and its effect.
Observations11
epic_fhir.dstu2_observations.getRead an Observation by id (FHIR DSTU2)readepic_fhir.dstu2_observations.searchSearch Observation resources (FHIR DSTU2)readepic_fhir.observations.createCreate an Observation (FHIR R4)writeepic_fhir.observations.getRead an Observation by id (FHIR R4)readepic_fhir.observations.searchSearch Observation resources (FHIR R4)readepic_fhir.observations.updateUpdate an Observation (FHIR R4)writeepic_fhir.stu3_observations.createCreate an Observation (FHIR STU3)writeepic_fhir.stu3_observations.getRead an Observation by id (FHIR STU3)readepic_fhir.stu3_observations.lastnGet the most recent observations per code ($lastn) (FHIR STU3)readepic_fhir.stu3_observations.searchSearch Observation resources (FHIR STU3)readepic_fhir.stu3_observations.updateUpdate an Observation (FHIR STU3)write
Patients10
epic_fhir.dstu2_patients.getRead a Patient by id (FHIR DSTU2)readepic_fhir.dstu2_patients.searchSearch Patient resources (FHIR DSTU2)readepic_fhir.patients.createCreate a Patient (FHIR R4)writeepic_fhir.patients.getRead a Patient by id (FHIR R4)readepic_fhir.patients.matchMatch patients against demographics ($match) (FHIR R4)readepic_fhir.patients.searchSearch Patient resources (FHIR R4)readepic_fhir.patients.summaryGet the International Patient Summary for a patient ($summary) (FHIR R4)readepic_fhir.stu3_patients.createCreate a Patient (FHIR STU3)writeepic_fhir.stu3_patients.getRead a Patient by id (FHIR STU3)readepic_fhir.stu3_patients.searchSearch Patient resources (FHIR STU3)read
Document references9
epic_fhir.document_references.createCreate a DocumentReference (FHIR R4)writeepic_fhir.document_references.getRead a DocumentReference by id (FHIR R4)readepic_fhir.document_references.searchSearch DocumentReference resources (FHIR R4)readepic_fhir.document_references.updateUpdate a DocumentReference (FHIR R4)writeepic_fhir.dstu2_document_references.getRead a DocumentReference by id (FHIR DSTU2)readepic_fhir.dstu2_document_references.searchSearch DocumentReference resources (FHIR DSTU2)readepic_fhir.stu3_document_references.createCreate a DocumentReference (FHIR STU3)writeepic_fhir.stu3_document_references.getRead a DocumentReference by id (FHIR STU3)readepic_fhir.stu3_document_references.searchSearch DocumentReference resources (FHIR STU3)read
Allergy intolerances8
epic_fhir.allergy_intolerances.createCreate an AllergyIntolerance (FHIR R4)writeepic_fhir.allergy_intolerances.getRead an AllergyIntolerance by id (FHIR R4)readepic_fhir.allergy_intolerances.searchSearch AllergyIntolerance resources (FHIR R4)readepic_fhir.dstu2_allergy_intolerances.getRead an AllergyIntolerance by id (FHIR DSTU2)readepic_fhir.dstu2_allergy_intolerances.searchSearch AllergyIntolerance resources (FHIR DSTU2)readepic_fhir.stu3_allergy_intolerances.createCreate an AllergyIntolerance (FHIR STU3)writeepic_fhir.stu3_allergy_intolerances.getRead an AllergyIntolerance by id (FHIR STU3)readepic_fhir.stu3_allergy_intolerances.searchSearch AllergyIntolerance resources (FHIR STU3)read
Conditions8
epic_fhir.conditions.createCreate a Condition (FHIR R4)writeepic_fhir.conditions.getRead a Condition by id (FHIR R4)readepic_fhir.conditions.searchSearch Condition resources (FHIR R4)readepic_fhir.dstu2_conditions.getRead a Condition by id (FHIR DSTU2)readepic_fhir.dstu2_conditions.searchSearch Condition resources (FHIR DSTU2)readepic_fhir.stu3_conditions.createCreate a Condition (FHIR STU3)writeepic_fhir.stu3_conditions.getRead a Condition by id (FHIR STU3)readepic_fhir.stu3_conditions.searchSearch Condition resources (FHIR STU3)read
Procedures8
epic_fhir.dstu2_procedures.getRead a Procedure by id (FHIR DSTU2)readepic_fhir.dstu2_procedures.searchSearch Procedure resources (FHIR DSTU2)readepic_fhir.procedures.createCreate a Procedure (FHIR R4)writeepic_fhir.procedures.getRead a Procedure by id (FHIR R4)readepic_fhir.procedures.searchSearch Procedure resources (FHIR R4)readepic_fhir.procedures.updateUpdate a Procedure (FHIR R4)writeepic_fhir.stu3_procedures.getRead a Procedure by id (FHIR STU3)readepic_fhir.stu3_procedures.searchSearch Procedure resources (FHIR STU3)read
Devices7
epic_fhir.devices.auxiliary_functionRaise an auxiliary-function (staff duress) notification ($auxiliary-function) (FHIR R4)writeepic_fhir.devices.getRead a Device by id (FHIR R4)readepic_fhir.devices.searchSearch Device resources (FHIR R4)readepic_fhir.dstu2_devices.getRead a Device by id (FHIR DSTU2)readepic_fhir.dstu2_devices.searchSearch Device resources (FHIR DSTU2)readepic_fhir.stu3_devices.getRead a Device by id (FHIR STU3)readepic_fhir.stu3_devices.searchSearch Device resources (FHIR STU3)read
Diagnostic reports7
epic_fhir.diagnostic_reports.getRead a DiagnosticReport by id (FHIR R4)readepic_fhir.diagnostic_reports.searchSearch DiagnosticReport resources (FHIR R4)readepic_fhir.diagnostic_reports.updateUpdate a DiagnosticReport (FHIR R4)writeepic_fhir.dstu2_diagnostic_reports.getRead a DiagnosticReport by id (FHIR DSTU2)readepic_fhir.dstu2_diagnostic_reports.searchSearch DiagnosticReport resources (FHIR DSTU2)readepic_fhir.stu3_diagnostic_reports.getRead a DiagnosticReport by id (FHIR STU3)readepic_fhir.stu3_diagnostic_reports.searchSearch DiagnosticReport resources (FHIR STU3)read
Goals7
epic_fhir.dstu2_goals.getRead a Goal by id (FHIR DSTU2)readepic_fhir.dstu2_goals.searchSearch Goal resources (FHIR DSTU2)readepic_fhir.goals.getRead a Goal by id (FHIR R4)readepic_fhir.goals.searchSearch Goal resources (FHIR R4)readepic_fhir.stu3_goals.createCreate a Goal (FHIR STU3)writeepic_fhir.stu3_goals.getRead a Goal by id (FHIR STU3)readepic_fhir.stu3_goals.searchSearch Goal resources (FHIR STU3)read
Appointments6
epic_fhir.appointments.getRead an Appointment by id (FHIR R4)readepic_fhir.appointments.searchSearch Appointment resources (FHIR R4)readepic_fhir.stu3_appointments.bookBook an appointment found with $find ($book) (FHIR STU3)writeepic_fhir.stu3_appointments.findFind available appointment slots ($find) (FHIR STU3)readepic_fhir.stu3_appointments.getRead an Appointment by id (FHIR STU3)readepic_fhir.stu3_appointments.searchSearch Appointment resources (FHIR STU3)read
Immunizations6
epic_fhir.dstu2_immunizations.getRead an Immunization by id (FHIR DSTU2)readepic_fhir.dstu2_immunizations.searchSearch Immunization resources (FHIR DSTU2)readepic_fhir.immunizations.getRead an Immunization by id (FHIR R4)readepic_fhir.immunizations.searchSearch Immunization resources (FHIR R4)readepic_fhir.stu3_immunizations.getRead an Immunization by id (FHIR STU3)readepic_fhir.stu3_immunizations.searchSearch Immunization resources (FHIR STU3)read
Medication statements6
epic_fhir.dstu2_medication_statements.getRead a MedicationStatement by id (FHIR DSTU2)readepic_fhir.dstu2_medication_statements.searchSearch MedicationStatement resources (FHIR DSTU2)readepic_fhir.medication_statements.getRead a MedicationStatement by id (FHIR R4)readepic_fhir.medication_statements.searchSearch MedicationStatement resources (FHIR R4)readepic_fhir.stu3_medication_statements.getRead a MedicationStatement by id (FHIR STU3)readepic_fhir.stu3_medication_statements.searchSearch MedicationStatement resources (FHIR STU3)read
Practitioners6
epic_fhir.dstu2_practitioners.getRead a Practitioner by id (FHIR DSTU2)readepic_fhir.dstu2_practitioners.searchSearch Practitioner resources (FHIR DSTU2)readepic_fhir.practitioners.getRead a Practitioner by id (FHIR R4)readepic_fhir.practitioners.searchSearch Practitioner resources (FHIR R4)readepic_fhir.stu3_practitioners.getRead a Practitioner by id (FHIR STU3)readepic_fhir.stu3_practitioners.searchSearch Practitioner resources (FHIR STU3)read
Medications5
epic_fhir.dstu2_medications.getRead a Medication by id (FHIR DSTU2)readepic_fhir.dstu2_medications.searchSearch Medication resources (FHIR DSTU2)readepic_fhir.medications.getRead a Medication by id (FHIR R4)readepic_fhir.medications.searchSearch Medication resources (FHIR R4)readepic_fhir.stu3_medications.getRead a Medication by id (FHIR STU3)read
Questionnaires5
epic_fhir.dtr_questionnaires.log_errorsReport DTR questionnaire errors to the payer ($log-questionnaire-errors) (FHIR R4)writeepic_fhir.dtr_questionnaires.next_questionGet the next questions of an adaptive questionnaire ($next-question) (FHIR R4)readepic_fhir.dtr_questionnaires.packageGet the payer's DTR questionnaire package for a coverage and order ($questionnaire-package) (FHIR R4)readepic_fhir.questionnaires.getRead a Questionnaire by id (FHIR R4)readepic_fhir.questionnaires.searchSearch Questionnaire resources (FHIR R4)read
Binaries4
epic_fhir.binaries.getRead a Binary by id (FHIR R4)readepic_fhir.binaries.searchSearch Binary resources (FHIR R4)readepic_fhir.dstu2_binaries.getRead a Binary by id (FHIR DSTU2)readepic_fhir.stu3_binaries.getRead a Binary by id (FHIR STU3)read
Body structures4
epic_fhir.body_structures.createCreate a BodyStructure (FHIR R4)writeepic_fhir.body_structures.getRead a BodyStructure by id (FHIR R4)readepic_fhir.body_structures.searchSearch BodyStructure resources (FHIR R4)readepic_fhir.body_structures.updateUpdate a BodyStructure (FHIR R4)write
Capabilities4
epic_fhir.capabilities.getGet the server CapabilityStatement (FHIR R4)readepic_fhir.dstu2_capabilities.getGet the server CapabilityStatement (FHIR DSTU2)readepic_fhir.smart_configuration.getGet the SMART on FHIR configurationreadepic_fhir.stu3_capabilities.getGet the server CapabilityStatement (FHIR STU3)read
Care plans4
epic_fhir.care_plans.getRead a CarePlan by id (FHIR R4)readepic_fhir.care_plans.searchSearch CarePlan resources (FHIR R4)readepic_fhir.dstu2_care_plans.getRead a CarePlan by id (FHIR DSTU2)readepic_fhir.dstu2_care_plans.searchSearch CarePlan resources (FHIR DSTU2)read
Claims4
epic_fhir.claims.getRead a Claim by id (FHIR R4)readepic_fhir.claims.inquireInquire about a prior authorization request ($inquire) (FHIR R4)readepic_fhir.claims.searchSearch Claim resources (FHIR R4)readepic_fhir.claims.submitSubmit a prior authorization request ($submit) (FHIR R4)write
Consents4
epic_fhir.consents.getRead a Consent by id (FHIR R4)readepic_fhir.consents.searchSearch Consent resources (FHIR R4)readepic_fhir.stu3_consents.getRead a Consent by id (FHIR STU3)readepic_fhir.stu3_consents.searchSearch Consent resources (FHIR STU3)read
Coverages4
epic_fhir.coverages.getRead a Coverage by id (FHIR R4)readepic_fhir.coverages.searchSearch Coverage resources (FHIR R4)readepic_fhir.stu3_coverages.getRead a Coverage by id (FHIR STU3)readepic_fhir.stu3_coverages.searchSearch Coverage resources (FHIR STU3)read
Device requests4
epic_fhir.device_requests.getRead a DeviceRequest by id (FHIR R4)readepic_fhir.device_requests.searchSearch DeviceRequest resources (FHIR R4)readepic_fhir.stu3_device_requests.getRead a DeviceRequest by id (FHIR STU3)readepic_fhir.stu3_device_requests.searchSearch DeviceRequest resources (FHIR STU3)read
Device use statements4
epic_fhir.device_use_statements.getRead a DeviceUseStatement by id (FHIR R4)readepic_fhir.device_use_statements.searchSearch DeviceUseStatement resources (FHIR R4)readepic_fhir.stu3_device_use_statements.getRead a DeviceUseStatement by id (FHIR STU3)readepic_fhir.stu3_device_use_statements.searchSearch DeviceUseStatement resources (FHIR STU3)read
Encounters4
epic_fhir.encounters.getRead an Encounter by id (FHIR R4)readepic_fhir.encounters.searchSearch Encounter resources (FHIR R4)readepic_fhir.stu3_encounters.getRead an Encounter by id (FHIR STU3)readepic_fhir.stu3_encounters.searchSearch Encounter resources (FHIR STU3)read
Flags4
epic_fhir.flags.getRead a Flag by id (FHIR R4)readepic_fhir.flags.searchSearch Flag resources (FHIR R4)readepic_fhir.stu3_flags.getRead a Flag by id (FHIR STU3)readepic_fhir.stu3_flags.searchSearch Flag resources (FHIR STU3)read
Immunization recommendations4
epic_fhir.immunization_recommendations.getRead an ImmunizationRecommendation by id (FHIR R4)readepic_fhir.immunization_recommendations.searchSearch ImmunizationRecommendation resources (FHIR R4)readepic_fhir.stu3_immunization_recommendations.getRead an ImmunizationRecommendation by id (FHIR STU3)readepic_fhir.stu3_immunization_recommendations.searchSearch ImmunizationRecommendation resources (FHIR STU3)read
Lists4
epic_fhir.lists.getRead a List by id (FHIR R4)readepic_fhir.lists.searchSearch List resources (FHIR R4)readepic_fhir.stu3_lists.getRead a List by id (FHIR STU3)readepic_fhir.stu3_lists.searchSearch List resources (FHIR STU3)read
Medication administrations4
epic_fhir.medication_administrations.getRead a MedicationAdministration by id (FHIR R4)readepic_fhir.medication_administrations.searchSearch MedicationAdministration resources (FHIR R4)readepic_fhir.stu3_medication_administrations.getRead a MedicationAdministration by id (FHIR STU3)readepic_fhir.stu3_medication_administrations.searchSearch MedicationAdministration resources (FHIR STU3)read
Medication dispenses4
epic_fhir.medication_dispenses.getRead a MedicationDispense by id (FHIR R4)readepic_fhir.medication_dispenses.searchSearch MedicationDispense resources (FHIR R4)readepic_fhir.stu3_medication_dispenses.getRead a MedicationDispense by id (FHIR STU3)readepic_fhir.stu3_medication_dispenses.searchSearch MedicationDispense resources (FHIR STU3)read
Medication requests4
epic_fhir.medication_requests.getRead a MedicationRequest by id (FHIR R4)readepic_fhir.medication_requests.searchSearch MedicationRequest resources (FHIR R4)readepic_fhir.stu3_medication_requests.getRead a MedicationRequest by id (FHIR STU3)readepic_fhir.stu3_medication_requests.searchSearch MedicationRequest resources (FHIR STU3)read
Nutrition orders4
epic_fhir.nutrition_orders.getRead a NutritionOrder by id (FHIR R4)readepic_fhir.nutrition_orders.searchSearch NutritionOrder resources (FHIR R4)readepic_fhir.stu3_nutrition_orders.getRead a NutritionOrder by id (FHIR STU3)readepic_fhir.stu3_nutrition_orders.searchSearch NutritionOrder resources (FHIR STU3)read
Practitioner roles4
epic_fhir.practitioner_roles.getRead a PractitionerRole by id (FHIR R4)readepic_fhir.practitioner_roles.searchSearch PractitionerRole resources (FHIR R4)readepic_fhir.stu3_practitioner_roles.getRead a PractitionerRole by id (FHIR STU3)readepic_fhir.stu3_practitioner_roles.searchSearch PractitionerRole resources (FHIR STU3)read
Service requests4
epic_fhir.service_requests.createCreate a ServiceRequest (FHIR R4)writeepic_fhir.service_requests.getRead a ServiceRequest by id (FHIR R4)readepic_fhir.service_requests.searchSearch ServiceRequest resources (FHIR R4)readepic_fhir.service_requests.updateUpdate a ServiceRequest (FHIR R4)write
Specimens4
epic_fhir.specimens.getRead a Specimen by id (FHIR R4)readepic_fhir.specimens.searchSearch Specimen resources (FHIR R4)readepic_fhir.stu3_specimens.getRead a Specimen by id (FHIR STU3)readepic_fhir.stu3_specimens.searchSearch Specimen resources (FHIR STU3)read
Communications3
epic_fhir.communications.createCreate a Communication (FHIR R4)writeepic_fhir.communications.getRead a Communication by id (FHIR R4)readepic_fhir.communications.searchSearch Communication resources (FHIR R4)read
Criteria reviews3
epic_fhir.criteria_reviews.createCreate a CriteriaReview (FHIR R4)writeepic_fhir.criteria_reviews.getRead a CriteriaReview by id (FHIR R4)readepic_fhir.criteria_reviews.updateUpdate a CriteriaReview (FHIR R4)write
Endpoints3
epic_fhir.endpoints.getRead an Endpoint by id (FHIR R4)readepic_fhir.endpoints.searchSearch Endpoint resources (FHIR R4)readepic_fhir.stu3_endpoints.getRead an Endpoint by id (FHIR STU3)read
Family member histories3
epic_fhir.dstu2_family_member_histories.searchSearch FamilyMemberHistory resources (FHIR DSTU2)readepic_fhir.family_member_histories.getRead a FamilyMemberHistory by id (FHIR R4)readepic_fhir.family_member_histories.searchSearch FamilyMemberHistory resources (FHIR R4)read
Locations3
epic_fhir.locations.getRead a Location by id (FHIR R4)readepic_fhir.locations.searchSearch Location resources (FHIR R4)readepic_fhir.stu3_locations.getRead a Location by id (FHIR STU3)read
Organizations3
epic_fhir.organizations.getRead an Organization by id (FHIR R4)readepic_fhir.organizations.searchSearch Organization resources (FHIR R4)readepic_fhir.stu3_organizations.getRead an Organization by id (FHIR STU3)read
Questionnaire responses3
epic_fhir.questionnaire_responses.createCreate a QuestionnaireResponse (FHIR R4)writeepic_fhir.questionnaire_responses.getRead a QuestionnaireResponse by id (FHIR R4)readepic_fhir.questionnaire_responses.searchSearch QuestionnaireResponse resources (FHIR R4)read
Review collections3
epic_fhir.review_collections.createCreate a ReviewCollection (FHIR R4)writeepic_fhir.review_collections.getRead a ReviewCollection by id (FHIR R4)readepic_fhir.review_collections.updateUpdate a ReviewCollection (FHIR R4)write
Tasks3
epic_fhir.tasks.getRead a Task by id (FHIR R4)readepic_fhir.tasks.searchSearch Task resources (FHIR R4)readepic_fhir.tasks.updateUpdate a Task (FHIR R4)write
Value sets3
epic_fhir.dtr_value_sets.expandExpand a value set referenced by a DTR questionnaire ($expand) (FHIR R4)readepic_fhir.value_sets.expandExpand the codes a value set supports ($expand) (FHIR R4)readepic_fhir.value_sets.getRead a ValueSet by id (FHIR R4)read
Accounts2
epic_fhir.accounts.getRead an Account by id (FHIR R4)readepic_fhir.accounts.searchSearch Account resources (FHIR R4)read
Adverse events2
epic_fhir.adverse_events.getRead an AdverseEvent by id (FHIR R4)readepic_fhir.adverse_events.searchSearch AdverseEvent resources (FHIR R4)read
Care teams2
epic_fhir.care_teams.getRead a CareTeam by id (FHIR R4)readepic_fhir.care_teams.searchSearch CareTeam resources (FHIR R4)read
CDS services2
epic_fhir.crd_services.discoverList the Coverage Requirements Discovery CDS services (FHIR R4)readepic_fhir.crd_services.evaluateAsk Coverage Requirements Discovery whether prior authorization is required (FHIR R4)read
Concept maps2
epic_fhir.concept_maps.createCreate a ConceptMap (FHIR R4)writeepic_fhir.concept_maps.getRead a ConceptMap by id (FHIR R4)read
Contracts2
epic_fhir.contracts.getRead a Contract by id (FHIR R4)readepic_fhir.contracts.searchSearch Contract resources (FHIR R4)read
Episode of cares2
epic_fhir.episode_of_cares.getRead an EpisodeOfCare by id (FHIR R4)readepic_fhir.episode_of_cares.searchSearch EpisodeOfCare resources (FHIR R4)read
Explanation of benefits2
epic_fhir.explanation_of_benefits.getRead an ExplanationOfBenefit by id (FHIR R4)readepic_fhir.explanation_of_benefits.searchSearch ExplanationOfBenefit resources (FHIR R4)read
Groups2
epic_fhir.groups.getRead a Group by id (FHIR R4)readepic_fhir.groups.searchSearch Group resources (FHIR R4)read
Imaging studies2
epic_fhir.imaging_studies.getRead an ImagingStudy by id (FHIR R4)readepic_fhir.imaging_studies.searchSearch ImagingStudy resources (FHIR R4)read
Measure reports2
epic_fhir.measure_reports.getRead a MeasureReport by id (FHIR R4)readepic_fhir.measure_reports.searchSearch MeasureReport resources (FHIR R4)read
Measures2
epic_fhir.measures.getRead a Measure by id (FHIR R4)readepic_fhir.measures.searchSearch Measure resources (FHIR R4)read
Media2
epic_fhir.media.getRead a Media by id (FHIR R4)readepic_fhir.media.searchSearch Media resources (FHIR R4)read
Medication orders2
epic_fhir.dstu2_medication_orders.getRead a MedicationOrder by id (FHIR DSTU2)readepic_fhir.dstu2_medication_orders.searchSearch MedicationOrder resources (FHIR DSTU2)read
Procedure requests2
epic_fhir.stu3_procedure_requests.getRead a ProcedureRequest by id (FHIR STU3)readepic_fhir.stu3_procedure_requests.searchSearch ProcedureRequest resources (FHIR STU3)read
Related persons2
epic_fhir.related_persons.getRead a RelatedPerson by id (FHIR R4)readepic_fhir.related_persons.searchSearch RelatedPerson resources (FHIR R4)read
Request groups2
epic_fhir.request_groups.getRead a RequestGroup by id (FHIR R4)readepic_fhir.request_groups.searchSearch RequestGroup resources (FHIR R4)read
Research studies2
epic_fhir.research_studies.getRead a ResearchStudy by id (FHIR R4)readepic_fhir.research_studies.searchSearch ResearchStudy resources (FHIR R4)read
Research subjects2
epic_fhir.research_subjects.getRead a ResearchSubject by id (FHIR R4)readepic_fhir.research_subjects.searchSearch ResearchSubject resources (FHIR R4)read
Substances2
epic_fhir.substances.getRead a Substance by id (FHIR R4)readepic_fhir.substances.searchSearch Substance resources (FHIR R4)read
Claim responses1
epic_fhir.claim_responses.notifySend a prior authorization claim response notification ($notify) (FHIR R4)write
Operations1
epic_fhir.operations.submitSubmit prior authorization attachments ($submit-attachment) (FHIR R4)write
Provenances1
epic_fhir.provenances.getRead a Provenance by id (FHIR R4)read
Schedules1
epic_fhir.stu3_schedules.getRead a Schedule by id (FHIR STU3)read
Slots1
epic_fhir.stu3_slots.getRead a Slot by id (FHIR STU3)read
Questions
The Epic on FHIR MCP server, answered.
Is there an Epic on FHIR MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 264 Epic on FHIR actions across observations, patients, document references and allergy intolerances, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Epic on FHIR.
What do I need to connect Epic on FHIR?
Your own Epic on FHIR OAuth app, registered with Epic on FHIR (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no Epic on FHIR app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. Plus your host and your instance path. The free call account { op: "connections.requirements", service: "epic_fhir" } lists exactly what to paste.
Can an AI agent change things in Epic on FHIR?
Only if its key allows it. 35 Epic on FHIR actions write, and none is destructive. A key can be limited to reads, capped, and set so a person confirms every write.
Will an AI agent use up my Epic on FHIR API limit?
actionlake paces every call to the limits in the Epic on FHIR service file: 10 calls a second per connection. Repeated reads are answered from cache (4 Epic on FHIR actions can be), which never reaches Epic on FHIR.
What does an Epic on FHIR action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (264 Epic on FHIR actions page). Cache hits, searches, dry runs and calls Epic on FHIR 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 Epic on FHIR API does it cover?
The Epic on FHIR (Epic EHR FHIR R4, STU3 and DSTU2 APIs) API Epic on FHIR, August 2026 release (FHIR R4 4.0.1, STU3 3.0.x, DSTU2 1.0.2) at your Epic on FHIR instance's API base URL, which you enter when connecting. It is built from Epic on FHIR's documentation as read on 23 October 2026. 264 actions in 70 areas, each one in the signed service file (version 1.0.0).
Can I combine Epic on FHIR with my other systems?
Yes. ask joins Epic on FHIR to ConnectWise PSA or NetSuite on the same customer and returns the answer rather than every row. Epic on FHIR maps crm.company, which 227 other connectors also map.
Does actionlake keep my Epic on FHIR data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, 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 Epic on FHIR 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 Epic on FHIR today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.