Query Particle Health patient records across connected clinical networks.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
⚠️ 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.
Purpose of use for the request, e.g. TREATMENT.
Particle-assigned patient id to run the query for.
Postal codes to hint where records may be found.
Specialties to focus the query, e.g. ["ONCOLOGY"].
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
⚠️ 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.
| Argument | Type | Description |
|---|---|---|
| hints | array | Postal codes to hint where records may be found. |
| specialties | array | Specialties to focus the query, e.g. ["ONCOLOGY"]. |
| purpose_of_use* | string | Purpose of use for the request, e.g. TREATMENT. |
| particle_patient_id* | string | Particle-assigned patient id to run the query for. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"particle_patient_id",
"purpose_of_use"
],
"properties": {
"hints": {
"type": "array",
"items": {
"type": "string"
},
"description": "Postal codes to hint where records may be found."
},
"specialties": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specialties to focus the query, e.g. [\"ONCOLOGY\"]."
},
"purpose_of_use": {
"type": "string",
"description": "Purpose of use for the request, e.g. TREATMENT."
},
"particle_patient_id": {
"type": "string",
"description": "Particle-assigned patient id to run the query for."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| particle_patient_id* | string | Particle-assigned patient id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"particle_patient_id"
],
"properties": {
"particle_patient_id": {
"type": "string",
"description": "Particle-assigned patient id."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| _count | integer | Page size (max resources per page). |
| _since | string | RFC3339 timestamp; only return resources updated since then. |
| _page_token | string | Opaque token from a previous page's `link` to fetch the next page. |
| particle_patient_id* | string | Particle-assigned patient id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"particle_patient_id"
],
"properties": {
"_count": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page size (max resources per page).",
"exclusiveMinimum": 0
},
"_since": {
"type": "string",
"description": "RFC3339 timestamp; only return resources updated since then."
},
"_page_token": {
"type": "string",
"description": "Opaque token from a previous page's `link` to fetch the next page."
},
"particle_patient_id": {
"type": "string",
"description": "Particle-assigned patient id."
}
}
}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}.
| Argument | Type | Description |
|---|---|---|
| _count | integer | Page size (max resources per page). |
| _since | string | RFC3339 timestamp; only return resources updated since then. |
| _page_token | string | Opaque token from a previous page's `link` to fetch the next page. |
| resource_type* | string | FHIR resource type, e.g. Condition, MedicationRequest, Observation, AllergyIntolerance. |
| particle_patient_id* | string | Particle-assigned patient id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"particle_patient_id",
"resource_type"
],
"properties": {
"_count": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page size (max resources per page).",
"exclusiveMinimum": 0
},
"_since": {
"type": "string",
"description": "RFC3339 timestamp; only return resources updated since then."
},
"_page_token": {
"type": "string",
"description": "Opaque token from a previous page's `link` to fetch the next page."
},
"resource_type": {
"type": "string",
"description": "FHIR resource type, e.g. Condition, MedicationRequest, Observation, AllergyIntolerance."
},
"particle_patient_id": {
"type": "string",
"description": "Particle-assigned patient id."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| _since | string | RFC3339 timestamp; only return data updated since then. |
| domain | string | Filter to a single clinical domain, e.g. Condition, Medication, Encounter. |
| particle_patient_id* | string | Particle-assigned patient id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"particle_patient_id"
],
"properties": {
"_since": {
"type": "string",
"description": "RFC3339 timestamp; only return data updated since then."
},
"domain": {
"type": "string",
"description": "Filter to a single clinical domain, e.g. Condition, Medication, Encounter."
},
"particle_patient_id": {
"type": "string",
"description": "Particle-assigned patient id."
}
}
}Fetch a single patient record by its Particle patient id. Endpoint: GET /api/v2/patients/{particle_patient_id}.
| Argument | Type | Description |
|---|---|---|
| particle_patient_id* | string | Particle-assigned patient id (from submit/search). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"particle_patient_id"
],
"properties": {
"particle_patient_id": {
"type": "string",
"description": "Particle-assigned patient id (from submit/search)."
}
}
}List the documents uploaded / available for a patient. Endpoint: GET /api/v1/documents/{patient_id}.
| Argument | Type | Description |
|---|---|---|
| patient_id* | string | Patient id whose documents to list. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"patient_id"
],
"properties": {
"patient_id": {
"type": "string",
"description": "Patient id whose documents to list."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| query_id | string | Specific query id; omit for the latest COMPLETE query. |
| particle_patient_id* | string | Particle-assigned patient id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"particle_patient_id"
],
"properties": {
"query_id": {
"type": "string",
"description": "Specific query id; omit for the latest COMPLETE query."
},
"particle_patient_id": {
"type": "string",
"description": "Particle-assigned patient id."
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| state | string | Two-letter US state code to filter participants, e.g. NY. |
| zipcode | string | 5-digit ZIP code to filter participants (ignored if `state` is set). |
| continuation_token | string | Token from a previous response to fetch the next page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"state": {
"type": "string",
"description": "Two-letter US state code to filter participants, e.g. NY."
},
"zipcode": {
"type": "string",
"description": "5-digit ZIP code to filter participants (ignored if `state` is set)."
},
"continuation_token": {
"type": "string",
"description": "Token from a previous response to fetch the next page."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| ssn | string | Social Security Number (optional; improves demographic match quality). |
| string | Patient email address. | |
| gender* | string | Administrative gender: MALE or FEMALE. |
| consent | array | Consent objects, if required by your Particle data-sharing agreement. |
| telephone | string | Patient phone number. |
| given_name* | string | Patient's legal first / given name. |
| patient_id* | string | Your own external identifier for this patient (echoed back by Particle). |
| family_name* | string | Patient's legal last / family name. |
⚠️ 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.
| Argument | Type | Description |
|---|---|---|
| ssn | string | Social Security Number (optional; improves demographic match quality). |
| string | Patient email address. | |
| gender* | string | Administrative gender: MALE or FEMALE. |
| consent | array | Consent objects, if required by your Particle data-sharing agreement. |
| telephone | string | Patient phone number. |
| given_name* | string | Patient's legal first / given name. |
| patient_id* | string | Your own external identifier for this patient (echoed back by Particle). |
| family_name* | string | Patient's legal last / family name. |
| postal_code* |
| string |
| 5-digit ZIP / postal code. |
| address_city* | string | City of the patient's home address. |
| address_lines | array | Street address lines, e.g. ["123 Main St"]. |
| address_state* | string | Two-letter US state code, e.g. NY. |
| date_of_birth* | string | Date of birth, YYYY-MM-DD. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"given_name",
"family_name",
"date_of_birth",
"gender",
"patient_id",
"address_city",
"address_state",
"postal_code"
],
"properties": {
"ssn": {
"type": "string",
"description": "Social Security Number (optional; improves demographic match quality)."
},
"email": {
"type": "string",
"description": "Patient email address."
},
"gender": {
"enum": [
"MALE",
"FEMALE"
],
"type": "string",
"description": "Administrative gender: MALE or FEMALE."
},
"consent": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Consent objects, if required by your Particle data-sharing agreement."
},
"telephone": {
"type": "string",
"description": "Patient phone number."
},
"given_name": {
"type": "string",
"description": "Patient's legal first / given name."
},
"patient_id": {
"type": "string",
"description": "Your own external identifier for this patient (echoed back by Particle)."
},
"family_name": {
"type": "string",
"description": "Patient's legal last / family name."
},
"postal_code": {
"type": "string",
"description": "5-digit ZIP / postal code."
},
"address_city": {
"type": "string",
"description": "City of the patient's home address."
},
"address_lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Street address lines, e.g. [\"123 Main St\"]."
},
"address_state": {
"type": "string",
"description": "Two-letter US state code, e.g. NY."
},
"date_of_birth": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date of birth, YYYY-MM-DD."
}
}
}| postal_code* |
| string |
| 5-digit ZIP / postal code. |
| address_city* | string | City of the patient's home address. |
| address_lines | array | Street address lines, e.g. ["123 Main St"]. |
| address_state* | string | Two-letter US state code, e.g. NY. |
| date_of_birth* | string | Date of birth, YYYY-MM-DD. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"given_name",
"family_name",
"date_of_birth",
"gender",
"patient_id",
"address_city",
"address_state",
"postal_code"
],
"properties": {
"ssn": {
"type": "string",
"description": "Social Security Number (optional; improves demographic match quality)."
},
"email": {
"type": "string",
"description": "Patient email address."
},
"gender": {
"enum": [
"MALE",
"FEMALE"
],
"type": "string",
"description": "Administrative gender: MALE or FEMALE."
},
"consent": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Consent objects, if required by your Particle data-sharing agreement."
},
"telephone": {
"type": "string",
"description": "Patient phone number."
},
"given_name": {
"type": "string",
"description": "Patient's legal first / given name."
},
"patient_id": {
"type": "string",
"description": "Your own external identifier for this patient (echoed back by Particle)."
},
"family_name": {
"type": "string",
"description": "Patient's legal last / family name."
},
"postal_code": {
"type": "string",
"description": "5-digit ZIP / postal code."
},
"address_city": {
"type": "string",
"description": "City of the patient's home address."
},
"address_lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Street address lines, e.g. [\"123 Main St\"]."
},
"address_state": {
"type": "string",
"description": "Two-letter US state code, e.g. NY."
},
"date_of_birth": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date of birth, YYYY-MM-DD."
}
}
}