Skip to content

Particle Health MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Query Particle Health patient records across connected clinical networks.

Deletes · 2

11 tools: 2 can delete or cancel things and 9 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http particlehealth https://particlehealth.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

11 tools

Deletes or cancels 2Claude Code: deny
  • particle_create_query⚠[U+FE0F] WRITE: initiate a nationwide clinical-record retrieval for a patient.No findings

    Why it is in this group

    • The name "particle_create_query" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote itContains invisible characters, shown as [U+…]
    ⚠[U+FE0F] WRITE: initiate a nationwide clinical-record retrieval for a patient. Returns a query_id — poll particle_get_query_status for progress. Endpoint: POST /api/v2/patients/{particle_patient_id}/query.

    Annotations the server declares

    • title: Create clinical-record query (WRITE)
    • destructiveHint: true
  • particle_submit_patient⚠[U+FE0F] WRITE: register a new patient with Particle Health.No findings

    Why it is in this group

    • The name "particle_submit_patient" says "submit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote itContains invisible characters, shown as [U+…]
    ⚠[U+FE0F] WRITE: register a new patient with Particle Health. Returns the patient with a system-generated particle_patient_id (use it for subsequent queries). Endpoint: POST /api/v2/patients.

    Annotations the server declares

    • title: Submit (register) patient (WRITE)
    • destructiveHint: true
Only reads 9Claude Code: allow
  • particle_get_ccdaRetrieve the patient's C-CDA clinical document(s).No findings

    Why it is in this group

    • The name "particle_get_ccda" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve the patient's C-CDA clinical document(s). May be large and returned as XML/text — parsed if JSON, otherwise passed through as-is. Endpoint: GET /api/v2/patients/{particle_patient_id}/ccda.

    Annotations the server declares

    • title: Get C-CDA document(s)
    • readOnlyHint: true
  • particle_get_fhirRetrieve the patient's complete clinical record as a FHIR searchset Bundle.No findings

    Why it is in this group

    • The name "particle_get_fhir" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve the patient's complete clinical record as a FHIR searchset Bundle. Supports incremental sync and pagination. Endpoint: GET /api/v2/patients/{particle_patient_id}/fhir.

    Annotations the server declares

    • title: Get FHIR bundle
    • readOnlyHint: true
  • particle_get_fhir_by_typeRetrieve only one FHIR resource type for a patient (e.g.No findings

    Why it is in this group

    • The name "particle_get_fhir_by_type" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve only one FHIR resource type for a patient (e.g. Condition, MedicationRequest, Observation) as a Bundle. Supports the same pagination as particle_get_fhir. Endpoint: GET /api/v2/patients/{particle_patient_id}/fhir/{type}.

    Annotations the server declares

    • title: Get FHIR resources by type
    • readOnlyHint: true
  • particle_get_flatRetrieve the patient's clinical data in Particle's flattened (de-nested) format, easier to read than raw FHIR.No findings

    Why it is in this group

    • The name "particle_get_flat" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve the patient's clinical data in Particle's flattened (de-nested) format, easier to read than raw FHIR. Optionally filter to one domain. Endpoint: GET /api/v2/patients/{particle_patient_id}/flat.

    Annotations the server declares

    • title: Get flattened clinical data
    • readOnlyHint: true
  • particle_get_patientFetch a single patient record by its Particle patient id.No findings

    Why it is in this group

    • The name "particle_get_patient" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single patient record by its Particle patient id. Endpoint: GET /api/v2/patients/{particle_patient_id}.

    Annotations the server declares

    • title: Get patient record
    • readOnlyHint: true
  • particle_get_patient_documentsList the documents uploaded / available for a patient.No findings

    Why it is in this group

    • The name "particle_get_patient_documents" says "get": a word for reading.
    Description, as the server wrote it
    List the documents uploaded / available for a patient. Endpoint: GET /api/v1/documents/{patient_id}.

    Annotations the server declares

    • title: List patient documents
    • readOnlyHint: true
  • particle_get_query_statusGet the status of a clinical-record retrieval query (state, timing, demographics, files).No findings

    Why it is in this group

    • The name "particle_get_query_status" says "get": a word for reading.
    Description, as the server wrote it
    Get the status of a clinical-record retrieval query (state, timing, demographics, files). Omit query_id to get the latest COMPLETE query. Endpoint: GET /api/v2/patients/{particle_patient_id}/query.

    Annotations the server declares

    • title: Get query status
    • readOnlyHint: true
  • particle_search_network_participantsList the health-data network participants (organizations Particle can query).No findings

    Why it is in this group

    • The name "particle_search_network_participants" says "search": a word for reading.
    Description, as the server wrote it
    List the health-data network participants (organizations Particle can query). Optionally filter by state or zipcode, and page with continuation_token. Endpoint: GET /api/v1/networkparticipants (with /state/{state} and /zipcode/{zip} variants).

    Annotations the server declares

    • title: Search network participants
    • readOnlyHint: true
  • particle_search_patientSearch for an existing patient by demographics (non-mutating).No findings

    Why it is in this group

    • The name "particle_search_patient" says "search": a word for reading.
    Description, as the server wrote it
    Search for an existing patient by demographics (non-mutating). Returns an array of matching patient objects (or a 204 message when none match). Endpoint: POST /api/v2/patients/search.

    Annotations the server declares

    • title: Search for a patient
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http particlehealth https://particlehealth.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__particlehealth__particle_get_patient",
      "mcp__particlehealth__particle_search_patient",
      "mcp__particlehealth__particle_get_query_status",
      "mcp__particlehealth__particle_get_fhir",
      "mcp__particlehealth__particle_get_fhir_by_type",
      "mcp__particlehealth__particle_get_flat",
      "mcp__particlehealth__particle_get_ccda",
      "mcp__particlehealth__particle_search_network_participants",
      "mcp__particlehealth__particle_get_patient_documents"
    ],
    "ask": [],
    "deny": [
      "mcp__particlehealth__particle_submit_patient",
      "mcp__particlehealth__particle_create_query"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as particlehealth. Review it before you use it.