Elation Health MCP by usefulapi

Read Elation Health patients, appointments, problems, allergies, medications, notes and vitals.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
96%
Naming quality
76%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'elationhealth_list_appointments' name length outside 3-30 rangein elationhealth_list_appointments
  • LOWTool 'elationhealth_list_appointment_types' name length outside 3-30 rangein elationhealth_list_appointment_types
  • LOWTool 'elationhealth_list_non_visit_notes' name length outside 3-30 rangein elationhealth_list_non_visit_notes

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,975Tokens (tool definitions)
~2.2 KBTypical response size
Significant attention impact (3.11% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "elation-health": {
      "url": "https://elation-health.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://elation-health.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢elationhealth_list_patients(first_name, last_name, dob, phone_number, practice, ...)

Search the practice's patient charts (PHI): id, name, date of birth, sex, contact details, address, status. First and last name match exactly (case-insensitive, no partial names). The SSN is redacted. Elation: GET /patients/.

Input Schema

{
  "type": "object",
  "properties": {
    "first_name": {
      "description": "Exact, case-insensitive first name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 150
    },
    "last_name": {
      "description": "Exact, case-insensitive last name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 150
    },
    "dob": {
      "description": "Date of birth, YYYY-MM-DD.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "phone_number": {
      "description": "Phone number.",
      "type": "string",
      "minLength": 3,
      "maxLength": 40
    },
    "practice": {
      "description": "Only patients of this practice id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "last_modified_after": {
      "description": "Only patients changed after this date or date-time.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ][\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$"
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_get_patient(patient_id)

Get one patient chart header by id (PHI): demographics, contact details, address, insurance, emergency contact, primary physician, tags. The SSN is redacted. Elation: GET /patients/{id}/.

Input Schema

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation patient id (from elationhealth_list_patients)."
    }
  },
  "required": [
    "patient_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_appointments(from_date, to_date, patient, physician, practice, ...)

List appointments and calendar time slots, filterable by date range, patient, physician and practice. Each has the scheduled date, duration, status, reason, patient, physician and service location. Elation: GET /appointments/.

Input Schema

{
  "type": "object",
  "properties": {
    "from_date": {
      "description": "Start of the range (ISO date or date-time).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ][\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$"
    },
    "to_date": {
      "description": "End of the range (ISO date or date-time).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ][\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$"
    },
    "patient": {
      "description": "Only this patient's appointments (patient id).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "physician": {
      "description": "Only this physician's appointments (physician id).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "practice": {
      "description": "Only this practice's appointments.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "time_slot_type": {
      "description": "Kind of calendar entry.",
      "type": "string",
      "enum": [
        "appointment",
        "appointment_slot",
        "event"
      ]
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_get_appointment(appointment_id)

Get one appointment by id: scheduled date, duration, status, reason, instructions, patient, physician, practice, service location, telehealth and billing details. Elation: GET /appointments/{id}/.

Input Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation appointment id."
    }
  },
  "required": [
    "appointment_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_appointment_types(practice, name, limit, cursor, offset)

List the appointment types (visit reasons with default duration) a practice offers. Elation: GET /appointment_types/.

Input Schema

{
  "type": "object",
  "properties": {
    "practice": {
      "description": "Only this practice's appointment types.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "name": {
      "description": "Filter by name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_practices(limit, cursor, offset)

List the practices this API key can access: id, name, address, status, time zone, physicians and service locations. Elation: GET /practices/.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_physicians(first_name, last_name, npi, limit, cursor, ...)

List the practice's physicians (providers): id, name, NPI, specialty, credentials, license, practice, user id. Elation: GET /physicians/.

Input Schema

{
  "type": "object",
  "properties": {
    "first_name": {
      "description": "Filter by first name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 150
    },
    "last_name": {
      "description": "Filter by last name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 150
    },
    "npi": {
      "description": "Filter by 10-digit NPI.",
      "type": "string",
      "pattern": "^\\d{10}$"
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_problems(patient, status, limit, cursor, offset)

List one patient's problem list (PHI): description, ICD-9/ICD-10/SNOMED codes, status (Active, Controlled, Resolved), start and resolved dates, synopsis. Elation: GET /problems/?patient=.

Input Schema

{
  "type": "object",
  "properties": {
    "patient": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation patient id (from elationhealth_list_patients)."
    },
    "status": {
      "description": "Problem status.",
      "type": "string",
      "enum": [
        "Active",
        "Controlled",
        "Resolved"
      ]
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_allergies(patient, limit, cursor, offset)

List one patient's allergies (PHI): allergen name, reaction, severity, status, start date. Elation: GET /allergies/?patient=.

Input Schema

{
  "type": "object",
  "properties": {
    "patient": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation patient id (from elationhealth_list_patients)."
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_medications(patient, discontinued, permanent, limit, cursor, ...)

List one patient's medication documents (PHI): drug name, strength, directions, quantity, authorized refills, prescribing physician, start date, and the discontinue order if any. Current and discontinued entries both appear unless you filter. Elation: GET /medications/?patient=.

Input Schema

{
  "type": "object",
  "properties": {
    "patient": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation patient id (from elationhealth_list_patients)."
    },
    "discontinued": {
      "description": "true = only medications with a discontinue order, false = only those without.",
      "type": "boolean"
    },
    "permanent": {
      "description": "true = only permanent (chronic) medications.",
      "type": "boolean"
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_visit_notes(patient, physician, unsigned, from_signed_date, to_signed_date, ...)

List one patient's visit notes (PHI): visit date, type, physician, signed state and the note body (bullets by category such as Subjective, Objective, Assessment, Plan). Filter by signed date or last change. Elation: GET /visit_notes/?patient=.

Input Schema

{
  "type": "object",
  "properties": {
    "patient": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation patient id (from elationhealth_list_patients)."
    },
    "physician": {
      "description": "Only notes of this physician id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "unsigned": {
      "description": "true = only unsigned notes.",
      "type": "boolean"
    },
    "from_signed_date": {
      "description": "Only notes signed on or after this date or date-time.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ][\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$"
    },
    "to_signed_date": {
      "description": "Only notes signed on or before this date or date-time.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ][\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$"
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_get_visit_note(visit_note_id)

Get one visit note by id (PHI): visit date, type, physician, signed state and the full note body. Elation: GET /visit_notes/{id}/.

Input Schema

{
  "type": "object",
  "properties": {
    "visit_note_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation visit note id (from elationhealth_list_visit_notes)."
    }
  },
  "required": [
    "visit_note_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_non_visit_notes(patient, limit, cursor, offset)

List one patient's non-visit notes (PHI): free-text chart notes outside a visit, such as phone calls and administrative notes. Elation: GET /non_visit_notes/?patient=.

Input Schema

{
  "type": "object",
  "properties": {
    "patient": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation patient id (from elationhealth_list_patients)."
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢elationhealth_list_vitals(patient, visit_note, limit, cursor, offset)

List one patient's vital signs (PHI): height, weight, BMI, blood pressure, heart rate, respiratory rate, temperature, oxygen saturation, pain, with chart dates. Elation: GET /vitals/?patient=.

Input Schema

{
  "type": "object",
  "properties": {
    "patient": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Elation patient id (from elationhealth_list_patients)."
    },
    "visit_note": {
      "description": "Only vitals recorded in this visit note id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Page size (default 25, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "Cursor from a previous reply's next_cursor, to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "offset": {
      "description": "Offset paging instead of a cursor (the reply then has count and next_offset).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools