# Tebra MCP connector

The Tebra connector lets Claude, ChatGPT, Cursor, or the Elaichi Agent read patients, encounters, conditions, care plans, and other clinical records from Tebra, with each person signed in as themselves and every lookup logged.

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

## Facts

| | |
| --- | --- |
| Application | Tebra |
| Category | Healthcare |
| AI tools | 54 |
| Authentication | OAuth or API key |
| 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 Tebra is connected

- List patients with an encounter this week and their care teams.
- Which patients have an active diabetes condition but no care plan?
- Show immunizations on file for the patients seen yesterday.

## Connect Tebra in Elaichi

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

1. Open Connections, choose Add connection, and pick Tebra.
2. Optionally set Share with, then press Connect.
3. Supply your own Tebra app, then approve. Tebra 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 Tebra tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Tebra 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.

## Tebra 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.

## Tebra 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 Tebra 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 Tebra 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 Tebra through Elaichi

### Pull up a patient before they arrive

Front desk. Ask for a patient by name and get their recent encounters, allergies, and care team in one answer, so the check-in conversation starts informed.

### Review a chart in plain language

Clinical. Before a visit, ask what conditions, observations, and immunizations are on file for a patient in Tebra and get a readable rundown instead of clicking through tabs.

### Find patients with no care plan

Care coordination. List patients carrying an active condition and check which of them have a care plan and a named care team, then follow up with the gaps.

### Check immunization coverage across the panel

Quality. Ask which patients seen this quarter have an immunization record and which do not, and get a list you can act on without exporting anything.

### Confirm encounters before claims go out

Billing. Look up the encounters and diagnostic reports tied to a patient to confirm a visit happened and what it covered before a claim is prepared.

### Answer questions about the week's visits

Practice management. Ask how many encounters took place, which providers' care teams were involved, and which document references were added, and get the numbers from live Tebra records.

## Elaichi vs Zapier MCP vs Composio for Tebra

All three can connect Tebra 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 Tebra tools | Allow or restrict single Tebra 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 Tebra 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 Tebra to Claude?

Connect Tebra in Elaichi first. Tebra uses OAuth or an API key, and this connector needs an OAuth application registered inside your Tebra account, so someone has to bring a client ID and secret once during setup, after which nobody touches them again. Then open Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Claude signs you in through Elaichi and Tebra records are available in your conversation.

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

Yes. Once Tebra 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 Tebra once and every client picks it up.

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

It can look things up. An agent can find a Tebra patient and read their encounters, conditions, allergies, care plans, care teams, goals, immunizations, observations, diagnostic reports, document references, and devices, then answer your question or summarize what it found. This connector reads Tebra records and does not change them. Short, concrete asks such as a patient name plus what you want to know work better than long paragraphs.

### Does connecting Tebra give the AI access to every patient record?

No. Every request runs under the Tebra sign-in of the person asking, so the agent sees only the patients and records that person can already open in Tebra. Elaichi can narrow that further, for example keeping diagnostic reports out of reach for a front desk team, but it can never widen what Tebra itself allows.

### Can my team share one Tebra connection?

Yes. One person connects Tebra in Elaichi and shares it with a team, and nobody else ever sees the client ID, secret, or API key. Each teammate still signs in as themselves, so the audit log names the actual person who looked up a Tebra patient, not a shared account.

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

This Tebra connector only reads records, so there is nothing for an agent to delete or edit. Restrictions still apply per action, so you can take any lookup away, such as reading observations or document references, for a particular team. A restricted action is left out of the tool list the AI client sees and cannot be called, whatever the prompt says.

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

Offboarding a person in Elaichi ends their access to Tebra through every connected client at once. A Tebra connection they shared keeps working for everyone else on the team. If you want the connection gone entirely, disconnect Tebra once in Elaichi and it disappears from Claude, ChatGPT, Cursor, and every other client together.

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

Yes. Tebra 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 Tebra?

Yes. Both let Claude, ChatGPT or Cursor use Tebra. 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 Tebra call.

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

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 Tebra: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 54 Tebra tools

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

- **List all Tebra patients** (List). Search patient records in Tebra (FHIR R4 Patient search, US Core / USCDI v1). Returns matching FHIR Patient resources from the searchset Bundle. Returns: resourceType, id, identifier, name, gender, birthDate, address. No parameter is required alone; send at least one of _id, identifier, name, birthdate with name, or gender with name.
- **Get single Tebra patient by ID** (Get). Get one patient from Tebra by FHIR logical id (FHIR R4 Patient read). Returns the FHIR Patient resource. Returns: resourceType, id, identifier, name, gender, birthDate, address. Required: id.
- **List all Tebra allergy intolerances** (List). Search allergy or intolerance records in Tebra (FHIR R4 AllergyIntolerance search, US Core / USCDI v1). Returns matching FHIR AllergyIntolerance resources from the searchset Bundle. Returns: resourceType, id, clinicalStatus, code, criticality, reaction. Required: patient.
- **Get single Tebra allergy intolerance by ID** (Get). Get one allergy or intolerance from Tebra by FHIR logical id (FHIR R4 AllergyIntolerance read). Returns the FHIR AllergyIntolerance resource. Returns: resourceType, id, clinicalStatus, code, criticality, reaction. Required: id.
- **List all Tebra care plans** (List). Search care plan records in Tebra (FHIR R4 CarePlan search, US Core / USCDI v1). Returns matching FHIR CarePlan resources from the searchset Bundle. Returns: resourceType, id, status, intent, category, activity. Required: patient, category.
- **Get single Tebra care plan by ID** (Get). Get one care plan from Tebra by FHIR logical id (FHIR R4 CarePlan read). Returns the FHIR CarePlan resource. Returns: resourceType, id, status, intent, category, activity. Required: id.
- **List all Tebra care teams** (List). Search care team records in Tebra (FHIR R4 CareTeam search, US Core / USCDI v1). Returns matching FHIR CareTeam resources from the searchset Bundle. Returns: resourceType, id, status, participant. Required: patient, status.
- **Get single Tebra care team by ID** (Get). Get one care team from Tebra by FHIR logical id (FHIR R4 CareTeam read). Returns the FHIR CareTeam resource. Returns: resourceType, id, status, participant. Required: id.
- **List all Tebra conditions** (List). Search condition (problem, health concern or encounter diagnosis) records in Tebra (FHIR R4 Condition search, US Core / USCDI v1). Returns matching FHIR Condition resources from the searchset Bundle. Returns: resourceType, id, clinicalStatus, category, code, onsetDateTime. Required: patient.
- **Get single Tebra condition by ID** (Get). Get one condition (problem, health concern or encounter diagnosis) from Tebra by FHIR logical id (FHIR R4 Condition read). Returns the FHIR Condition resource. Returns: resourceType, id, clinicalStatus, category, code, onsetDateTime. Required: id.
- **List all Tebra diagnostic reports** (List). Search diagnostic report records in Tebra (FHIR R4 DiagnosticReport search, US Core / USCDI v1). Returns matching FHIR DiagnosticReport resources from the searchset Bundle. Returns: resourceType, id, status, category, code, issued, result. Required: patient.
- **Get single Tebra diagnostic report by ID** (Get). Get one diagnostic report from Tebra by FHIR logical id (FHIR R4 DiagnosticReport read). Returns the FHIR DiagnosticReport resource. Returns: resourceType, id, status, category, code, issued, result. Required: id.
- **List all Tebra document references** (List). Search document reference (including clinical notes) records in Tebra (FHIR R4 DocumentReference search, US Core / USCDI v1). Returns matching FHIR DocumentReference resources from the searchset Bundle. Returns: resourceType, id, status, type, category, date, content. Required: patient.
- **Get single Tebra document reference by ID** (Get). Get one document reference (including clinical notes) from Tebra by FHIR logical id (FHIR R4 DocumentReference read). Returns the FHIR DocumentReference resource. Returns: resourceType, id, status, type, category, date, content. Required: id.
- **List all Tebra encounters** (List). Search encounter records in Tebra (FHIR R4 Encounter search, US Core / USCDI v1). Returns matching FHIR Encounter resources from the searchset Bundle. Returns: resourceType, id, status, class, type, period, participant. Required: patient.
- **Get single Tebra encounter by ID** (Get). Get one encounter from Tebra by FHIR logical id (FHIR R4 Encounter read). Returns the FHIR Encounter resource. Returns: resourceType, id, status, class, type, period, participant. Required: id.
- **List all Tebra goals** (List). Search goal records in Tebra (FHIR R4 Goal search, US Core / USCDI v1). Returns matching FHIR Goal resources from the searchset Bundle. Returns: resourceType, id, lifecycleStatus, description, target. Required: patient.
- **Get single Tebra goal by ID** (Get). Get one goal from Tebra by FHIR logical id (FHIR R4 Goal read). Returns the FHIR Goal resource. Returns: resourceType, id, lifecycleStatus, description, target. Required: id.
- **List all Tebra immunizations** (List). Search immunization records in Tebra (FHIR R4 Immunization search, US Core / USCDI v1). Returns matching FHIR Immunization resources from the searchset Bundle. Returns: resourceType, id, status, vaccineCode, occurrenceDateTime, lotNumber. Required: patient.
- **Get single Tebra immunization by ID** (Get). Get one immunization from Tebra by FHIR logical id (FHIR R4 Immunization read). Returns the FHIR Immunization resource. Returns: resourceType, id, status, vaccineCode, occurrenceDateTime, lotNumber. Required: id.
- **List all Tebra devices** (List). Search implantable device records in Tebra (FHIR R4 Device search, US Core / USCDI v1). Returns matching FHIR Device resources from the searchset Bundle. Returns: resourceType, id, udiCarrier, status, type. Required: patient.
- **Get single Tebra device by ID** (Get). Get one implantable device from Tebra by FHIR logical id (FHIR R4 Device read). Returns the FHIR Device resource. Returns: resourceType, id, udiCarrier, status, type. Required: id.
- **List all Tebra observations** (List). Search observation (vital signs, laboratory results, smoking status) records in Tebra (FHIR R4 Observation search, US Core / USCDI v1). Returns matching FHIR Observation resources from the searchset Bundle. Returns: resourceType, id, status, category, code, valueQuantity, effectiveDateTime. Required: patient.
- **Get single Tebra observation by ID** (Get). Get one observation (vital signs, laboratory results, smoking status) from Tebra by FHIR logical id (FHIR R4 Observation read). Returns the FHIR Observation resource. Returns: resourceType, id, status, category, code, valueQuantity, effectiveDateTime. Required: id.
- **List all Tebra locations** (List). Search location records in Tebra (FHIR R4 Location search, US Core / USCDI v1). Returns matching FHIR Location resources from the searchset Bundle. Returns: resourceType, id, name, address, status. Required: name.
- **Get single Tebra location by ID** (Get). Get one location from Tebra by FHIR logical id (FHIR R4 Location read). Returns the FHIR Location resource. Returns: resourceType, id, name, address, status. Required: id.
- **List all Tebra medications** (List). Search medication records in Tebra (FHIR R4 Medication search, US Core / USCDI v1). Returns matching FHIR Medication resources from the searchset Bundle. Returns: resourceType, id, code, form. No parameters are documented; read a medication by id with the get method.
- **Get single Tebra medication by ID** (Get). Get one medication from Tebra by FHIR logical id (FHIR R4 Medication read). Returns the FHIR Medication resource. Returns: resourceType, id, code, form. Required: id.
- **List all Tebra medication requests** (List). Search medication request records in Tebra (FHIR R4 MedicationRequest search, US Core / USCDI v1). Returns matching FHIR MedicationRequest resources from the searchset Bundle. Returns: resourceType, id, status, intent, medicationCodeableConcept, dosageInstruction. Required: patient, intent.
- **Get single Tebra medication request by ID** (Get). Get one medication request from Tebra by FHIR logical id (FHIR R4 MedicationRequest read). Returns the FHIR MedicationRequest resource. Returns: resourceType, id, status, intent, medicationCodeableConcept, dosageInstruction. Required: id.
- **List all Tebra organizations** (List). Search organization records in Tebra (FHIR R4 Organization search, US Core / USCDI v1). Returns matching FHIR Organization resources from the searchset Bundle. Returns: resourceType, id, name, address, telecom. Required: name.
- **Get single Tebra organization by ID** (Get). Get one organization from Tebra by FHIR logical id (FHIR R4 Organization read). Returns the FHIR Organization resource. Returns: resourceType, id, name, address, telecom. Required: id.
- **List all Tebra practitioners** (List). Search practitioner records in Tebra (FHIR R4 Practitioner search, US Core / USCDI v1). Returns matching FHIR Practitioner resources from the searchset Bundle. Returns: resourceType, id, identifier, name, telecom. Required: name.
- **Get single Tebra practitioner by ID** (Get). Get one practitioner from Tebra by FHIR logical id (FHIR R4 Practitioner read). Returns the FHIR Practitioner resource. Returns: resourceType, id, identifier, name, telecom. Required: id.
- **List all Tebra practitioner roles** (List). Search practitioner role records in Tebra (FHIR R4 PractitionerRole search, US Core / USCDI v1). Returns matching FHIR PractitionerRole resources from the searchset Bundle. Returns: resourceType, id, practitioner, organization, specialty. No parameter is required; narrow with specialty or practitioner.
- **Get single Tebra practitioner role by ID** (Get). Get one practitioner role from Tebra by FHIR logical id (FHIR R4 PractitionerRole read). Returns the FHIR PractitionerRole resource. Returns: resourceType, id, practitioner, organization, specialty. Required: id.
- **List all Tebra procedures** (List). Search procedure records in Tebra (FHIR R4 Procedure search, US Core / USCDI v1). Returns matching FHIR Procedure resources from the searchset Bundle. Returns: resourceType, id, status, code, performedDateTime. Required: patient.
- **Get single Tebra procedure by ID** (Get). Get one procedure from Tebra by FHIR logical id (FHIR R4 Procedure read). Returns the FHIR Procedure resource. Returns: resourceType, id, status, code, performedDateTime. Required: id.
- **List all Tebra provenances** (List). Search provenance records in Tebra (FHIR R4 Provenance search, US Core / USCDI v1). Returns matching FHIR Provenance resources from the searchset Bundle. Returns: resourceType, id, target, recorded, agent. No single parameter is required by the schema; send patient or _id together with _revinclude=Provenance:target.
- **Get single Tebra provenance by ID** (Get). Get one provenance from Tebra by FHIR logical id (FHIR R4 Provenance read). Returns the FHIR Provenance resource. Returns: resourceType, id, target, recorded, agent. Required: id.
- **List all Tebra clinical patients** (List). Get the demographics of the patient who owns the API key (Tebra Clinical REST API). Returns the patient object with patientId, dob, gender, firstName, lastName, race, ethnicity and communication. The patient is fixed by the key; no id is passed. No parameter is required.
- **List all Tebra clinical encounters** (List). List encounters of the API key patient in Tebra (Clinical REST API): visit, care team and health concerns. Returns participant, period, location and diagnosis per encounter. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical medical allergies** (List). List medication allergies of the API key patient in Tebra (Clinical REST API). Returns code (RxNorm), allergen, reaction, severity, startDate and status per allergy. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical care plans** (List). List care plans and assessments of the API key patient in Tebra (Clinical REST API). Returns context period, addresses and activity per plan. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical problems** (List). List the problem list of the API key patient in Tebra (Clinical REST API). Returns code (SNOMED CT), name, startDate, endDate and status per problem. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical devices** (List). List implantable device unique device identifiers (UDI) of the API key patient in Tebra (Clinical REST API). Returns deviceIdentifier, carrierHRF, name and comments per device. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical procedures** (List). List procedures of the API key patient in Tebra (Clinical REST API). Returns code (CPT), name, date and status per procedure. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical goals** (List). List goals linked to the encounters of the API key patient in Tebra (Clinical REST API). Returns statusDate and description per goal. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical vital signs** (List). List vital signs of the API key patient in Tebra (Clinical REST API). Returns code (LOINC), name, date, value and unit per reading. No parameter is required; narrow with startDate and endDate.
- **List all Tebra clinical smoking statuses** (List). List the smoking status of the API key patient in Tebra (Clinical REST API). Returns the SNOMED CT smoking status code and its text. The PDF documents the path /patient/smokingStatus; the live OpenAPI serves it at /patient/observation/socialHistory/smokingStatus, which this method uses. No parameter is required.
- ...and 4 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
