Search and read a patient chart over the Canvas FHIR R4 API. Read-only.
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.
Fetch the server's FHIR CapabilityStatement — exactly which resources, interactions and search parameters this Canvas instance supports. Read it when a search is rejected and you want to know what the instance actually accepts. Canvas: GET /metadata.
This tool takes no arguments.
Fetch the server's FHIR CapabilityStatement — exactly which resources, interactions and search parameters this Canvas instance supports. Read it when a search is rejected and you want to know what the instance actually accepts. Canvas: GET /metadata.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a patient's full record in one FHIR bundle — conditions, medications, observations, encounters and more. The fastest way to answer a broad question about one person, but it can return a large document, so prefer canvas_search when you know which resource you need. Canvas: GET /Patient/{id}/$everything.
| Argument | Type | Description |
|---|---|---|
| _count | integer | Page size, 1-100. |
| patient_id* | string | The Patient resource id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"patient_id"
],
"properties": {
"_count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1-100."
},
"patient_id": {
"type": "string",
"description": "The Patient resource id."
}
}
}Fetch a single FHIR resource by type and id. Canvas: GET /{resource}/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The resource's id. |
| resource* | string | Which FHIR resource type to read. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"resource",
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource's id."
},
"resource": {
"enum": [
"Patient",
"Appointment",
"Condition",
"Observation",
"MedicationRequest",
"MedicationStatement",
"MedicationDispense",
"AllergyIntolerance",
"Immunization",
"Encounter",
"DocumentReference",
"DiagnosticReport",
"Procedure",
"CarePlan",
"CareTeam",
"Goal",
"Coverage",
"Claim",
"Practitioner",
"Organization",
"Location",
"Schedule",
"Slot",
"Task",
"ServiceRequest",
"Questionnaire",
"QuestionnaireResponse",
"Consent",
"Device",
"Specimen",
"RelatedPerson",
"Communication",
"DetectedIssue",
"Provenance",
"Media",
"Group"
],
"type": "string",
"description": "Which FHIR resource type to read."
}
}
}Search any supported FHIR R4 resource in the chart. Pick `resource`, then narrow with the standard FHIR search parameters. Nearly every clinical question starts here: Condition or Observation for a problem list and results, MedicationRequest for prescriptions, Appointment or Encounter for visits, DocumentReference for notes. Canvas: GET /{resource}.
| Argument | Type | Description |
|---|---|---|
| _id | string | Fetch by resource id through search. |
| date | string | FHIR date filter, e.g. "ge2026-08-01" or "lt2026-09-01". Prefixes: eq, ne, gt, lt, ge, le. |
| name | string | Name search, for Patient and Practitioner. |
| _sort | string | Sort field, e.g. -date for newest first. |
| _count | integer | Page size, 1-100. |
| status | string | FHIR status filter, e.g. active, completed, cancelled. |
| _offset | integer | Offset for paging through results. |
| patient | string | Restrict to one patient, by Patient id. The usual first filter. |
| resource* |
| string |
| Which FHIR resource type to search. |
| identifier | string | Search by business identifier, e.g. an MRN. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"resource"
],
"properties": {
"_id": {
"type": "string",
"description": "Fetch by resource id through search."
},
"date": {
"type": "string",
"description": "FHIR date filter, e.g. \"ge2026-08-01\" or \"lt2026-09-01\". Prefixes: eq, ne, gt, lt, ge, le."
},
"name": {
"type": "string",
"description": "Name search, for Patient and Practitioner."
},
"_sort": {
"type": "string",
"description": "Sort field, e.g. -date for newest first."
},
"_count": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1-100."
},
"status": {
"type": "string",
"description": "FHIR status filter, e.g. active, completed, cancelled."
},
"_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Offset for paging through results."
},
"patient": {
"type": "string",
"description": "Restrict to one patient, by Patient id. The usual first filter."
},
"resource": {
"enum": [
"Patient",
"Appointment",
"Condition",
"Observation",
"MedicationRequest",
"MedicationStatement",
"MedicationDispense",
"AllergyIntolerance",
"Immunization",
"Encounter",
"DocumentReference",
"DiagnosticReport",
"Procedure",
"CarePlan",
"CareTeam",
"Goal",
"Coverage",
"Claim",
"Practitioner",
"Organization",
"Location",
"Schedule",
"Slot",
"Task",
"ServiceRequest",
"Questionnaire",
"QuestionnaireResponse",
"Consent",
"Device",
"Specimen",
"RelatedPerson",
"Communication",
"DetectedIssue",
"Provenance",
"Media",
"Group"
],
"type": "string",
"description": "Which FHIR resource type to search."
},
"identifier": {
"type": "string",
"description": "Search by business identifier, e.g. an MRN."
}
}
}