Connectors · Accounting & finance
Medplum MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Medplum and the rest of your systems. It gives your agent 591 Medplum actions (219 reads, 286 writes and 86 that wait for a confirmation) and holds the Medplum credential itself, so the agent never does. It paces Medplum'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: "medplum.users.list", intent: "check which Medplum account is connected"}# Search User resources · read · 1 upstream call- 591actionsin one signed file
- 219readlook, never change
- 286writecreate and update
- 86wait for a yesdestructive, confirmed first
Set up
Connect Medplum 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 Medplum.
OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.
client_idMedplum ClientApplication ID (Medplum app > Project Admin > Clients > New client, or Admin > Clients; the client's…client_secretThat ClientApplication's secret (shown on the client's page)hostWhere your Medplum lives: your host
account { op: "connections.requirements", service: "medplum" } # 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: "medplum.users.list" }# search user resources · read · 1 upstream callcheck { action: "medplum.users.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Medplum at a glance
- Sign-in
- OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.
- You provide
client_idclient_secret- Setup fields
host- Limits we pace to
- 50 calls a second, per connection
- API covered
- Medplum server API (FHIR R4 at /fhir/R4, plus /admin, /auth, /oauth2, /scim/v2, /email/v1, /cds-services)
api.medplum.com - Built from
- Medplum's documentation, read 23 October 2026api.medplum.comGitHubmedplum.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 210 of 219 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 5, so ask can line Medplum up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Medplum.
591 actions in 93 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 219readlook, never change
- 286writecreate and update
- 86destructivewait for a confirmation
Resources
207 read · 10 write · 3 destructive
Run AWS Textract on an attachment · Create any resource · Get a resource's version history · Search any resource type
Agents
199 read · 9 write · 1 destructive
Get the status of many agents · Create an Agent · Search Agent resources · Push a message through an agent
Code systems
148 read · 5 write · 1 destructive
Create a CodeSystem · Import concepts into a code system · Import concepts into a code system (by id) · Search CodeSystem resources
Appointments
123 read · 7 write · 2 destructive
Search Appointment resources · Create an Appointment · Read an Appointment · Replace an Appointment
Patients
125 read · 6 write · 1 destructive
Create a Patient · Start a bulk export of all patients · Generate an SMART Health Card · Generate an SMART Health Link
Fhir
118 read · 3 write · 0 destructive
Call Medplum's AI operation · Run a batch or transaction Bundle · Start a system-level bulk export · Run a GraphQL query
Bots
102 read · 7 write · 1 destructive
Create a Bot · Execute a Bot · Execute a Bot by identifier · Create a Bot with code
Claims
103 read · 6 write · 1 destructive
Create a Claim · Export a Claim as a CMS-1500 PDF · Search Claim resources · Submit a Claim to the clearinghouse
85 more areas · 483 actions
- Concept maps 10
- Value sets 9
- Admin projects 8
- Coverage eligibility requests 8
- Projects 8
- Questionnaire responses 8
- Users 8
- Charge item definitions 7
- Client applications 7
- Groups 7
- Measures 7
- Plan definitions 7
- Structure definitions 7
- Subscriptions 7
- Access policies 6
- Accounts 6
- Activity definitions 6
- Allergy intolerances 6
- Care plans 6
- Care teams 6
- Charge items 6
- Claim responses 6
- Clinical impressions 6
- Communication requests 6
- Communications 6
- Compositions 6
- Conditions 6
- Consents 6
- Coverage eligibility responses 6
- Coverages 6
- Devices 6
- Diagnostic reports 6
- Document references 6
- Encounters 6
- Endpoints 6
- Episode of cares 6
- Explanation of benefits 6
- Family member histories 6
- Flags 6
- Goals 6
- Healthcare services 6
- Immunizations 6
- Invoices 6
- Lists 6
- Locations 6
- Measure reports 6
- Media 6
- Medication administrations 6
- Medication dispenses 6
- Medication requests 6
- Medication statements 6
- Medications 6
- Observations 6
- Organizations 6
- Persons 6
- Practitioner roles 6
- Practitioners 6
- Procedures 6
- Project memberships 6
- Provenances 6
- Questionnaires 6
- Related persons 6
- Risk assessments 6
- Schedules 6
- Scim users 6
- Search parameters 6
- Service requests 6
- Slots 6
- Specimens 6
- Tasks 6
- User configurations 6
- Admin memberships 5
- Async jobs 5
- Package releases 3
- Audit events 2
- Auth 2
- Binaries 2
- Bulk data exports 2
- Bulk exports 2
- CDS services 2
- Logins 2
- Oauth 2
- Smart app launches 2
- Email 1
- Health 1
Top actions
The Medplum API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 11 of Medplum's 11 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
medplum.users.listSearch User resources | Search User resources. | read | identity.user.list474 connectors |
medplum.users.createCreate a User | Create a User. | write | identity.user.create262 connectors |
medplum.users.deleteDelete a User | Delete a User. | destructive | identity.user.delete253 connectors |
medplum.appointments.listSearch Appointment resources | Search Appointment resources. | read | service.service_appointment.list12 connectors |
medplum.auth.meGet the current login | Get the current login. | read | identity.current_user.get307 connectors |
medplum.appointments.createCreate an Appointment | Create a Appointment. | write | service.service_appointment.create13 connectors |
medplum.locations.listSearch Location resources | Search Location resources. | read | this connector |
medplum.organizations.listSearch Organization resources | Search Organization resources. | read | this connector |
medplum.client_applications.listSearch ClientApplication resources | Search ClientApplication resources. | read | this connector |
medplum.fhir.aiCall Medplum's AI operation | Call Medplum's AI operation. | read | this connector |
medplum.bots.initCreate a Bot with code | Create a Bot with code. | write | this connector |
medplum.email.sendSend an email | Send an email. | write | this connector |
Try it
Prompts to paste into Claude.
Each one names the Medplum actions it will call, so you know what it reads and what it changes before you send it.
- Readread
List the companies in Medplum and flag likely duplicates by name or domain.
calls
medplum.organizations.list - Writewrite
Create a User in Medplum. Show me exactly what you will send before you save it.
calls
medplum.users.create - Across systemsread
Which Medplum companies have invoices in ConnectWise PSA, and how many each?
calls
medplum.organizations.listconnectwise_manage.invoices.list
Across your systems
Medplum, joined to the rest of your business.
One ask fetches from Medplum and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which Medplum companies have invoices in ConnectWise PSA, and how many each?
medplum.organizations.list+connectwise_manage.invoices.list, oncrm.company· ConnectWise PSAWhich Medplum companies have tickets in HubSpot CRM, and how many each?
medplum.organizations.list+hubspot_crm.tickets.list, oncrm.company· HubSpot CRM
identity.user 517crm.company 227identity.application 20identity.organizational_unit 10service.service_appointment 9ask { intent: "which Medplum companies have invoices in ConnectWise PSA, and how many each", steps: [ { action: "medplum.organizations.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 Medplum
Destructive actions wait for a yes.
86 Medplum actions are destructive. The first 10:
- Delete a User
medplum.users.delete - Delete an Appointment
medplum.appointments.delete - Delete a Bot
medplum.bots.delete - Delete a Flag
medplum.flags.delete - Delete a Goal
medplum.goals.delete - Delete a List
medplum.lists.delete - Delete a Media
medplum.media.delete - Delete a Slot
medplum.slots.delete - Delete a Task
medplum.tasks.delete - Delete an Agent
medplum.agents.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.
Delete a User?
intent: the user asked me to delete a User
account { op: "keys.create", name: "medplum-agent", allowed_actions: ["medplum.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "medplum.users.delete", approver: "[email protected]" }, { match: "medplum.appointments.delete", approver: "[email protected]" }, { match: "medplum.bots.delete", approver: "[email protected]" } ]}Cost
What Medplum costs on actionlake.
Every Medplum action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Medplum 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 591 Medplum actions
- 591actions pageeach page of a long list is one call
- 210reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Medplum action.
591 actions by area: the id your agent calls, what it does, and its effect.
Resources20
medplum.resources.aws_textractRun AWS Textract on an attachmentwritemedplum.resources.createCreate any resourcewritemedplum.resources.historyGet a resource's version historyreadmedplum.resources.searchSearch any resource typereadmedplum.resources.conditional_deleteDelete resources matched by searchdestructivemedplum.resources.conditional_patchPatch a resource matched by searchwrite- and 14 more in this area
Agents19
medplum.agents.bulk_statusGet the status of many agentsreadmedplum.agents.createCreate an Agentwritemedplum.agents.listSearch Agent resourcesreadmedplum.agents.pushPush a message through an agentwritemedplum.agents.deleteDelete an Agentdestructivemedplum.agents.fetch_logsFetch an agent's recent logsread- and 13 more in this area
Code systems14
medplum.code_systems.createCreate a CodeSystemwritemedplum.code_systems.importImport concepts into a code systemwritemedplum.code_systems.import_by_idImport concepts into a code system (by id)writemedplum.code_systems.listSearch CodeSystem resourcesreadmedplum.code_systems.deleteDelete a CodeSystemdestructivemedplum.code_systems.getRead a CodeSystemread- and 8 more in this area
Appointments12
medplum.appointments.createCreate an Appointmentwritemedplum.appointments.getRead an Appointmentreadmedplum.appointments.listSearch Appointment resourcesreadmedplum.appointments.updateReplace an Appointmentwritemedplum.appointments.bookBook an appointmentwritemedplum.appointments.cancelCancel an appointmentdestructive- and 6 more in this area
Patients12
medplum.patients.createCreate a Patientwritemedplum.patients.exportStart a bulk export of all patientswritemedplum.patients.generate_smart_health_cardGenerate an SMART Health Cardwritemedplum.patients.generate_smart_health_linkGenerate an SMART Health Linkwritemedplum.patients.deleteDelete a Patientdestructivemedplum.patients.everythingGet everything about a patientread- and 6 more in this area
Fhir11
medplum.fhir.aiCall Medplum's AI operationreadmedplum.fhir.batchRun a batch or transaction Bundlewritemedplum.fhir.exportStart a system-level bulk exportwritemedplum.fhir.graphql_queryRun a GraphQL queryreadmedplum.fhir.capabilitiesGet the FHIR CapabilityStatementreadmedplum.fhir.graphql_mutationRun a GraphQL mutationwrite- and 5 more in this area
Bots10
medplum.bots.createCreate a Botwritemedplum.bots.executeExecute a Botwritemedplum.bots.execute_by_identifierExecute a Bot by identifierwritemedplum.bots.initCreate a Bot with codewritemedplum.bots.deleteDelete a Botdestructivemedplum.bots.deployDeploy a Bot's codewrite- and 4 more in this area
Claims10
medplum.claims.createCreate a Claimwritemedplum.claims.exportExport a Claim as a CMS-1500 PDFwritemedplum.claims.listSearch Claim resourcesreadmedplum.claims.submitSubmit a Claim to the clearinghousewritemedplum.claims.deleteDelete a Claimdestructivemedplum.claims.export_by_idExport a stored Claim as a CMS-1500 PDFread- and 4 more in this area
Concept maps10
medplum.concept_maps.createCreate a ConceptMapwritemedplum.concept_maps.importImport mappings into a concept mapwritemedplum.concept_maps.import_by_idImport mappings into a concept map (by id)writemedplum.concept_maps.listSearch ConceptMap resourcesreadmedplum.concept_maps.deleteDelete a ConceptMapdestructivemedplum.concept_maps.getRead a ConceptMapread- and 4 more in this area
Value sets9
medplum.value_sets.createCreate a ValueSetwritemedplum.value_sets.expandExpand a value setreadmedplum.value_sets.getRead a ValueSetreadmedplum.value_sets.listSearch ValueSet resourcesreadmedplum.value_sets.deleteDelete a ValueSetdestructivemedplum.value_sets.patchPatch a ValueSetwrite- and 3 more in this area
Admin projects8
medplum.admin_projects.create_botCreate a Botwritemedplum.admin_projects.create_clientCreate a client applicationwritemedplum.admin_projects.getGet a project's admin viewreadmedplum.admin_projects.inviteInvite a user to the projectwritemedplum.admin_projects.set_passwordForce-set a user's passwordwritemedplum.admin_projects.update_secretsReplace the project's secretswrite- and 2 more in this area
Coverage eligibility requests8
medplum.coverage_eligibility_requests.createCreate a CoverageEligibilityRequestwritemedplum.coverage_eligibility_requests.listSearch CoverageEligibilityRequest resourcesreadmedplum.coverage_eligibility_requests.submitSubmit an eligibility checkwritemedplum.coverage_eligibility_requests.submit_by_idSubmit a stored eligibility checkwritemedplum.coverage_eligibility_requests.deleteDelete a CoverageEligibilityRequestdestructivemedplum.coverage_eligibility_requests.getRead a CoverageEligibilityRequestread- and 2 more in this area
Projects8
medplum.projects.archiveArchive a projectwritemedplum.projects.cloneClone a projectwritemedplum.projects.initCreate a projectwritemedplum.projects.listSearch Project resourcesreadmedplum.projects.getRead a Projectreadmedplum.projects.patchPatch a Projectwrite- and 2 more in this area
Questionnaire responses8
medplum.questionnaire_responses.createCreate a QuestionnaireResponsewritemedplum.questionnaire_responses.extractExtract resources from a questionnaire responsereadmedplum.questionnaire_responses.extract_inlineExtract resources from an unsaved questionnaire responsereadmedplum.questionnaire_responses.listSearch QuestionnaireResponse resourcesreadmedplum.questionnaire_responses.deleteDelete a QuestionnaireResponsedestructivemedplum.questionnaire_responses.getRead a QuestionnaireResponseread- and 2 more in this area
Users8
medplum.users.createCreate a Userwritemedplum.users.getRead a Userreadmedplum.users.listSearch User resourcesreadmedplum.users.updateReplace a Userwritemedplum.users.deleteDelete a Userdestructivemedplum.users.patchPatch a Userwrite- and 2 more in this area
Charge item definitions7
medplum.charge_item_definitions.applyPrice a charge itemwritemedplum.charge_item_definitions.createCreate a ChargeItemDefinitionwritemedplum.charge_item_definitions.getRead a ChargeItemDefinitionreadmedplum.charge_item_definitions.listSearch ChargeItemDefinition resourcesreadmedplum.charge_item_definitions.deleteDelete a ChargeItemDefinitiondestructivemedplum.charge_item_definitions.patchPatch a ChargeItemDefinitionwrite- and 1 more in this area
Client applications7
medplum.client_applications.createCreate a ClientApplicationwritemedplum.client_applications.getRead a ClientApplicationreadmedplum.client_applications.listSearch ClientApplication resourcesreadmedplum.client_applications.updateReplace a ClientApplicationwritemedplum.client_applications.deleteDelete a ClientApplicationdestructivemedplum.client_applications.patchPatch a ClientApplicationwrite- and 1 more in this area
Groups7
medplum.groups.createCreate a Groupwritemedplum.groups.exportStart a bulk export of a Groupwritemedplum.groups.getRead a Groupreadmedplum.groups.listSearch Group resourcesreadmedplum.groups.deleteDelete a Groupdestructivemedplum.groups.patchPatch a Groupwrite- and 1 more in this area
Measures7
medplum.measures.createCreate a Measurewritemedplum.measures.evaluateEvaluate a measurewritemedplum.measures.getRead a Measurereadmedplum.measures.listSearch Measure resourcesreadmedplum.measures.deleteDelete a Measuredestructivemedplum.measures.patchPatch a Measurewrite- and 1 more in this area
Plan definitions7
medplum.plan_definitions.applyApply a plan definitionwritemedplum.plan_definitions.createCreate a PlanDefinitionwritemedplum.plan_definitions.getRead a PlanDefinitionreadmedplum.plan_definitions.listSearch PlanDefinition resourcesreadmedplum.plan_definitions.deleteDelete a PlanDefinitiondestructivemedplum.plan_definitions.patchPatch a PlanDefinitionwrite- and 1 more in this area
Structure definitions7
medplum.structure_definitions.createCreate a StructureDefinitionwritemedplum.structure_definitions.expand_profileExpand a profile with its dependenciesreadmedplum.structure_definitions.getRead a StructureDefinitionreadmedplum.structure_definitions.listSearch StructureDefinition resourcesreadmedplum.structure_definitions.deleteDelete a StructureDefinitiondestructivemedplum.structure_definitions.patchPatch a StructureDefinitionwrite- and 1 more in this area
Subscriptions7
medplum.subscriptions.createCreate a Subscriptionwritemedplum.subscriptions.getRead a Subscriptionreadmedplum.subscriptions.get_ws_binding_tokenGet a WebSocket binding tokenreadmedplum.subscriptions.listSearch Subscription resourcesreadmedplum.subscriptions.deleteDelete a Subscriptiondestructivemedplum.subscriptions.patchPatch a Subscriptionwrite- and 1 more in this area
Access policies6
medplum.access_policies.createCreate an AccessPolicywritemedplum.access_policies.getRead an AccessPolicyreadmedplum.access_policies.listSearch AccessPolicy resourcesreadmedplum.access_policies.updateReplace an AccessPolicywritemedplum.access_policies.deleteDelete an AccessPolicydestructivemedplum.access_policies.patchPatch an AccessPolicywrite
Accounts6
medplum.accounts.createCreate an Accountwritemedplum.accounts.getRead an Accountreadmedplum.accounts.listSearch Account resourcesreadmedplum.accounts.updateReplace an Accountwritemedplum.accounts.deleteDelete an Accountdestructivemedplum.accounts.patchPatch an Accountwrite
Activity definitions6
medplum.activity_definitions.createCreate an ActivityDefinitionwritemedplum.activity_definitions.getRead an ActivityDefinitionreadmedplum.activity_definitions.listSearch ActivityDefinition resourcesreadmedplum.activity_definitions.updateReplace an ActivityDefinitionwritemedplum.activity_definitions.deleteDelete an ActivityDefinitiondestructivemedplum.activity_definitions.patchPatch an ActivityDefinitionwrite
Allergy intolerances6
medplum.allergy_intolerances.createCreate an AllergyIntolerancewritemedplum.allergy_intolerances.getRead an AllergyIntolerancereadmedplum.allergy_intolerances.listSearch AllergyIntolerance resourcesreadmedplum.allergy_intolerances.updateReplace an AllergyIntolerancewritemedplum.allergy_intolerances.deleteDelete an AllergyIntolerancedestructivemedplum.allergy_intolerances.patchPatch an AllergyIntolerancewrite
Care plans6
medplum.care_plans.createCreate a CarePlanwritemedplum.care_plans.getRead a CarePlanreadmedplum.care_plans.listSearch CarePlan resourcesreadmedplum.care_plans.updateReplace a CarePlanwritemedplum.care_plans.deleteDelete a CarePlandestructivemedplum.care_plans.patchPatch a CarePlanwrite
Care teams6
medplum.care_teams.createCreate a CareTeamwritemedplum.care_teams.getRead a CareTeamreadmedplum.care_teams.listSearch CareTeam resourcesreadmedplum.care_teams.updateReplace a CareTeamwritemedplum.care_teams.deleteDelete a CareTeamdestructivemedplum.care_teams.patchPatch a CareTeamwrite
Charge items6
medplum.charge_items.createCreate a ChargeItemwritemedplum.charge_items.getRead a ChargeItemreadmedplum.charge_items.listSearch ChargeItem resourcesreadmedplum.charge_items.updateReplace a ChargeItemwritemedplum.charge_items.deleteDelete a ChargeItemdestructivemedplum.charge_items.patchPatch a ChargeItemwrite
Claim responses6
medplum.claim_responses.createCreate a ClaimResponsewritemedplum.claim_responses.getRead a ClaimResponsereadmedplum.claim_responses.listSearch ClaimResponse resourcesreadmedplum.claim_responses.updateReplace a ClaimResponsewritemedplum.claim_responses.deleteDelete a ClaimResponsedestructivemedplum.claim_responses.patchPatch a ClaimResponsewrite
Clinical impressions 6Communication requests 6Communications 6Compositions 6Conditions 6Consents 6Coverage eligibility responses 6Coverages 6Devices 6Diagnostic reports 6Document references 6Encounters 6Endpoints 6Episode of cares 6Explanation of benefits 6Family member histories 6Flags 6Goals 6Healthcare services 6Immunizations 6Invoices 6Lists 6Locations 6Measure reports 6Media 6Medication administrations 6Medication dispenses 6Medication requests 6Medication statements 6Medications 6Observations 6Organizations 6Persons 6Practitioner roles 6Practitioners 6Procedures 6Project memberships 6Provenances 6Questionnaires 6Related persons 6Risk assessments 6Schedules 6Scim users 6Search parameters 6Service requests 6Slots 6Specimens 6Tasks 6User configurations 6Admin memberships 5Async jobs 5Package releases 3Audit events 2Auth 2Binaries 2Bulk data exports 2Bulk exports 2CDS services 2Logins 2Oauth 2Smart app launches 2Email 1Health 1
This index shows a sample of each area. All 591 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.
Questions
The Medplum MCP server, answered.
Is there a Medplum MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 591 Medplum actions across resources, agents, code systems and appointments, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Medplum.
What do I need to connect Medplum?
Medplum ClientApplication ID (Medplum app > Project Admin > Clients > New client, or Admin > Clients; the client's… and That ClientApplication's secret (shown on the client's page). Plus your host. The free call account { op: "connections.requirements", service: "medplum" } lists exactly what to paste.
Can an AI agent delete or change things in Medplum?
Only if its key allows it, and only with an explicit confirmation. 86 Medplum actions are destructive, including delete a User, delete an Appointment and delete a Bot. 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 Medplum API limit?
actionlake paces every call to the limits in the Medplum service file: 50 calls a second per connection. Repeated reads are answered from cache (210 Medplum actions can be), which never reaches Medplum.
What does a Medplum action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (591 Medplum actions page). Cache hits, searches, dry runs and calls Medplum 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 Medplum API does it cover?
The Medplum server API (FHIR R4 at /fhir/R4, plus /admin, /auth, /oauth2, /scim/v2, /email/v1, /cds-services) at api.medplum.com by default, or the base URL set when you connect. It is built from Medplum's documentation as read on 23 October 2026. 591 actions in 93 areas, each one in the signed service file (version 1.0.0).
Can I combine Medplum with my other systems?
Yes. ask joins Medplum to ConnectWise PSA or HubSpot CRM on the same customer and returns the answer rather than every row. Medplum maps crm.company, which 227 other connectors also map.
Does actionlake keep my Medplum 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 Medplum 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 Medplum today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.