Skip to content

Healthcare · Beta

Canvas Medical
API integration

Ship Healthcare features without building the integration. Full Canvas Medical API access via Proxy and 160+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Canvas Medical

Use Cases

Why integrate with Canvas Medical

Common scenarios for SaaS companies building Canvas Medical integrations for their customers.

01

Embed AI scribe output directly into Canvas charts

Ambient dictation and AI documentation tools can push structured notes back into the correct patient encounter without clinicians copy-pasting between apps. Truto handles the Canvas FHIR auth and resource mapping so you ship the integration in days, not quarters.

02

Power RPM and connected-device data pipelines

Remote patient monitoring platforms can stream vitals, glucose readings, and device telemetry into Canvas as Observations and trigger follow-up Tasks when thresholds are breached. This lets your SaaS become the system of record for device data while Canvas remains the clinical source of truth.

03

Run a digital front door on top of Canvas scheduling

Patient booking, intake, and engagement platforms can read live Slots and Schedules, create Appointments and Patients, and sync insurance Coverage back to Canvas. Your users get a modern booking experience without their practice replacing its EHR.

04

Fuel value-based care and RCM analytics with bulk exports

Analytics and risk-adjustment platforms can trigger Canvas Bulk Export jobs to ingest Conditions, Claims, and Encounters at scale, then write back DetectedIssues to flag HCC gaps and coding opportunities. Truto manages the long-running export jobs so your pipeline just consumes NDJSON.

05

Enable async messaging and specialty telehealth workflows

Asynchronous care and specialty telehealth portals can log patient-clinician messages as Communications in Canvas and sync replies back to the patient-facing app. This keeps the clinical record complete without forcing providers out of their Canvas workflow.

What You Can Build

Ship these features with Truto + Canvas Medical

Concrete product features your team can ship faster by leveraging Truto’s Canvas Medical integration instead of building from scratch.

01

Bi-directional patient and appointment sync

Keep patient demographics and appointments aligned between your product and Canvas using create, update, and search operations on Patient and Appointment resources.

02

Clinical note write-back as DocumentReference

Push AI-generated SOAP notes, PDFs, or narrative summaries into Canvas as DocumentReferences linked to the right patient and encounter.

03

Device and lab Observation ingestion

Stream vitals, RPM readings, and lab values into Canvas as Observation resources so clinicians see them in the native chart view.

04

Task-based clinician inbox automation

Create and update Canvas Tasks to route follow-ups, critical alerts, and review requests directly into the clinician's work queue.

05

Dynamic intake and assessment capture

Map digital intake forms and clinical assessments (PHQ-9, GAD-7, custom screeners) into Canvas as QuestionnaireResponses tied to the patient record.

06

Bulk export pipelines for analytics and AI

Kick off patient-, group-, or system-level Bulk Export jobs, monitor job status, and ingest NDJSON output for population health, RCM, or model training.

SuperAI

Canvas Medical AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

get_single_canvas_medical_allergen_by_id

Get a single Allergen from Canvas by its id. Returns the FHIR R4 Allergen resource. Returns: resourceType, id, code. Required: id.

list_all_canvas_medical_allergens

Search Allergen resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Allergen resources, one page at a time. Needs either code or _text. Returns: resourceType, id, code. Required: one of code or _text.

get_single_canvas_medical_allergy_intolerance_by_id

Get a single AllergyIntolerance from Canvas by its id. Returns the FHIR R4 AllergyIntolerance resource. Returns: resourceType, id, clinicalStatus, verificationStatus, type. Required: id.

list_all_canvas_medical_allergy_intolerances

Search AllergyIntolerance resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 AllergyIntolerance resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, type. No parameters are required.

canvas_medical_allergy_intolerances_search

Search AllergyIntolerance resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 AllergyIntolerance resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, type. No parameters are required.

create_a_canvas_medical_allergy_intolerance

Create a AllergyIntolerance in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: clinicalStatus, verificationStatus, type, code, patient.

update_a_canvas_medical_allergy_intolerance_by_id

Replace a AllergyIntolerance in Canvas by sending the full FHIR AllergyIntolerance resource (PUT). Canvas answers 200 OK with an empty body. Required: id, clinicalStatus, verificationStatus, type, code, patient.

get_single_canvas_medical_appointment_by_id

Get a single Appointment from Canvas by its id. Returns the FHIR R4 Appointment resource. Returns: resourceType, id, status, appointmentType, reasonCode. Required: id.

list_all_canvas_medical_appointments

Search Appointment resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Appointment resources, one page at a time. The status filter takes one value per request. Returns: resourceType, id, status, appointmentType, reasonCode. No parameters are required.

canvas_medical_appointments_search

Search Appointment resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Appointment resources, one page at a time. The status filter takes one value per request. Returns: resourceType, id, status, appointmentType, reasonCode. No parameters are required.

create_a_canvas_medical_appointment

Create a Appointment in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, supportingInformation, start, end, participant.

update_a_canvas_medical_appointment_by_id

Replace a Appointment in Canvas by sending the full FHIR Appointment resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, supportingInformation, start, end, participant.

get_single_canvas_medical_care_plan_by_id

Get a single CarePlan from Canvas by its id. Returns the FHIR R4 CarePlan resource. Returns: resourceType, id, status, intent, category. Required: id.

list_all_canvas_medical_care_plans

Search CarePlan resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 CarePlan resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.

canvas_medical_care_plans_search

Search CarePlan resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 CarePlan resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.

get_single_canvas_medical_care_team_by_id

Get a single CareTeam from Canvas by its id. Returns the FHIR R4 CareTeam resource. Returns: resourceType, id, status, name, subject. Required: id.

list_all_canvas_medical_care_teams

Search CareTeam resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 CareTeam resources, one page at a time. Returns: resourceType, id, status, name, subject. No parameters are required.

canvas_medical_care_teams_search

Search CareTeam resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 CareTeam resources, one page at a time. Returns: resourceType, id, status, name, subject. No parameters are required.

update_a_canvas_medical_care_team_by_id

Replace a CareTeam in Canvas by sending the full FHIR CareTeam resource (PUT). Canvas answers 200 OK with an empty body. Required: id.

get_single_canvas_medical_claim_by_id

Get a single Claim from Canvas by its id. Returns the FHIR R4 Claim resource. Returns: resourceType, id, status, type, use. Required: id.

list_all_canvas_medical_claims

Search Claim resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Claim resources, one page at a time. Returns: resourceType, id, status, type, use. No parameters are required.

canvas_medical_claims_search

Search Claim resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Claim resources, one page at a time. Returns: resourceType, id, status, type, use. No parameters are required.

create_a_canvas_medical_claim

Create a Claim in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, type, use, patient, created, provider, priority, diagnosis, insurance, item.

update_a_canvas_medical_claim_by_id

Replace a Claim in Canvas by sending the full FHIR Claim resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, type, use, patient, created, provider, priority, insurance.

get_single_canvas_medical_communication_by_id

Get a single Communication from Canvas by its id. Returns the FHIR R4 Communication resource. Returns: resourceType, id, status, subject, sent. Required: id.

list_all_canvas_medical_communications

Search Communication resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Communication resources, one page at a time. Returns only messages between a practitioner and a patient. Returns: resourceType, id, status, subject, sent. No parameters are required.

canvas_medical_communications_search

Search Communication resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Communication resources, one page at a time. Returns only messages between a practitioner and a patient. Returns: resourceType, id, status, subject, sent. No parameters are required.

create_a_canvas_medical_communication

Create a Communication in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, recipient, sender, payload.

get_single_canvas_medical_condition_by_id

Get a single Condition from Canvas by its id. Returns the FHIR R4 Condition resource. Returns: resourceType, id, clinicalStatus, verificationStatus, category. Required: id.

list_all_canvas_medical_conditions

Search Condition resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Condition resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, category. No parameters are required.

canvas_medical_conditions_search

Search Condition resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Condition resources, one page at a time. Returns: resourceType, id, clinicalStatus, verificationStatus, category. No parameters are required.

create_a_canvas_medical_condition

Create a Condition in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: clinicalStatus, category, code, subject.

update_a_canvas_medical_condition_by_id

Replace a Condition in Canvas by sending the full FHIR Condition resource (PUT). Canvas answers 200 OK with an empty body. Required: id, clinicalStatus, category, code, subject.

get_single_canvas_medical_consent_by_id

Get a single Consent from Canvas by its id. Returns the FHIR R4 Consent resource. Returns: resourceType, id, status, scope, category. Required: id.

list_all_canvas_medical_consents

Search Consent resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Consent resources, one page at a time. Returns: resourceType, id, status, scope, category. No parameters are required.

canvas_medical_consents_search

Search Consent resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Consent resources, one page at a time. Returns: resourceType, id, status, scope, category. No parameters are required.

create_a_canvas_medical_consent

Create a Consent in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, scope, category, patient, sourceAttachment, provision.

get_single_canvas_medical_coverage_by_id

Get a single Coverage from Canvas by its id. Returns the FHIR R4 Coverage resource. Returns: resourceType, id, status, type, subscriber. Required: id.

list_all_canvas_medical_coverages

Search Coverage resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Coverage resources, one page at a time. Does not filter by date; each Coverage carries period.start and period.end. Returns: resourceType, id, status, type, subscriber. No parameters are required.

canvas_medical_coverages_search

Search Coverage resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Coverage resources, one page at a time. Does not filter by date; each Coverage carries period.start and period.end. Returns: resourceType, id, status, type, subscriber. No parameters are required.

create_a_canvas_medical_coverage

Create a Coverage in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: identifier, status, subscriber, beneficiary, relationship, payor, order.

update_a_canvas_medical_coverage_by_id

Replace a Coverage in Canvas by sending the full FHIR Coverage resource (PUT). Canvas answers 200 OK with an empty body. Required: id, identifier, status, subscriber, beneficiary, relationship, payor, order.

get_single_canvas_medical_coverage_eligibility_response_by_id

Get a single CoverageEligibilityResponse from Canvas by its id. Returns the FHIR R4 CoverageEligibilityResponse resource. Returns: resourceType, id, status, purpose, patient. Required: id.

list_all_canvas_medical_coverage_eligibility_responses

Search CoverageEligibilityResponse resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 CoverageEligibilityResponse resources, one page at a time. Returns: resourceType, id, status, purpose, patient. No parameters are required.

canvas_medical_coverage_eligibility_responses_search

Search CoverageEligibilityResponse resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 CoverageEligibilityResponse resources, one page at a time. Returns: resourceType, id, status, purpose, patient. No parameters are required.

get_single_canvas_medical_detected_issue_by_id

Get a single DetectedIssue from Canvas by its id. Returns the FHIR R4 DetectedIssue resource. Returns: resourceType, id, status, code, severity. Required: id.

list_all_canvas_medical_detected_issues

Search DetectedIssue resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 DetectedIssue resources, one page at a time. Returns: resourceType, id, status, code, severity. No parameters are required.

canvas_medical_detected_issues_search

Search DetectedIssue resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 DetectedIssue resources, one page at a time. Returns: resourceType, id, status, code, severity. No parameters are required.

create_a_canvas_medical_detected_issue

Create a DetectedIssue in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, code, patient, identifiedDateTime, author, evidence.

update_a_canvas_medical_detected_issue_by_id

Replace a DetectedIssue in Canvas by sending the full FHIR DetectedIssue resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, code, patient, identifiedDateTime, author, evidence.

get_single_canvas_medical_device_by_id

Get a single Device from Canvas by its id. Returns the FHIR R4 Device resource. Returns: resourceType, id, udiCarrier, status, distinctIdentifier. Required: id.

list_all_canvas_medical_devices

Search Device resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Device resources, one page at a time. Returns: resourceType, id, udiCarrier, status, distinctIdentifier. No parameters are required.

canvas_medical_devices_search

Search Device resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Device resources, one page at a time. Returns: resourceType, id, udiCarrier, status, distinctIdentifier. No parameters are required.

get_single_canvas_medical_diagnostic_report_by_id

Get a single DiagnosticReport from Canvas by its id. Returns the FHIR R4 DiagnosticReport resource. Returns: resourceType, id, status, category, code. Required: id.

list_all_canvas_medical_diagnostic_reports

Search DiagnosticReport resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 DiagnosticReport resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.

canvas_medical_diagnostic_reports_search

Search DiagnosticReport resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 DiagnosticReport resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.

get_single_canvas_medical_document_reference_by_id

Get a single DocumentReference from Canvas by its id. Returns the FHIR R4 DocumentReference resource. Returns: resourceType, id, status, type, category. Required: id.

list_all_canvas_medical_document_references

Search DocumentReference resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 DocumentReference resources, one page at a time. Returns: resourceType, id, status, type, category. No parameters are required.

canvas_medical_document_references_search

Search DocumentReference resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 DocumentReference resources, one page at a time. Returns: resourceType, id, status, type, category. No parameters are required.

create_a_canvas_medical_document_reference

Create a DocumentReference in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: extension, status, type, category, subject, content.

get_single_canvas_medical_encounter_by_id

Get a single Encounter from Canvas by its id. Returns the FHIR R4 Encounter resource. Returns: resourceType, id, status, class, type. Required: id.

list_all_canvas_medical_encounters

Search Encounter resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Encounter resources, one page at a time. Returns: resourceType, id, status, class, type. No parameters are required.

canvas_medical_encounters_search

Search Encounter resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Encounter resources, one page at a time. Returns: resourceType, id, status, class, type. No parameters are required.

get_single_canvas_medical_goal_by_id

Get a single Goal from Canvas by its id. Returns the FHIR R4 Goal resource. Returns: resourceType, id, lifecycleStatus, achievementStatus, priority. Required: id.

list_all_canvas_medical_goals

Search Goal resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Goal resources, one page at a time. Returns: resourceType, id, lifecycleStatus, achievementStatus, priority. No parameters are required.

canvas_medical_goals_search

Search Goal resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Goal resources, one page at a time. Returns: resourceType, id, lifecycleStatus, achievementStatus, priority. No parameters are required.

get_single_canvas_medical_group_by_id

Get a single Group from Canvas by its id. Returns the FHIR R4 Group resource. Returns: resourceType, id, type, actual, name. Required: id.

list_all_canvas_medical_groups

Search Group resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Group resources, one page at a time. Returns: resourceType, id, type, actual, name. No parameters are required.

canvas_medical_groups_search

Search Group resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Group resources, one page at a time. Returns: resourceType, id, type, actual, name. No parameters are required.

create_a_canvas_medical_group

Create a Group in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: type, actual, name.

update_a_canvas_medical_group_by_id

Replace a Group in Canvas by sending the full FHIR Group resource (PUT). Canvas answers 200 OK with an empty body. Required: id, type, actual, name.

get_single_canvas_medical_immunization_by_id

Get a single Immunization from Canvas by its id. Returns the FHIR R4 Immunization resource. Returns: resourceType, id, status, statusReason, vaccineCode. Required: id.

list_all_canvas_medical_immunizations

Search Immunization resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Immunization resources, one page at a time. Returns: resourceType, id, status, statusReason, vaccineCode. No parameters are required.

canvas_medical_immunizations_search

Search Immunization resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Immunization resources, one page at a time. Returns: resourceType, id, status, statusReason, vaccineCode. No parameters are required.

create_a_canvas_medical_immunization

Create a Immunization in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, vaccineCode, patient, occurrenceDateTime, primarySource.

update_a_canvas_medical_immunization_by_id

Replace a Immunization in Canvas by sending the full FHIR Immunization resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, vaccineCode, patient, occurrenceDateTime, primarySource.

get_single_canvas_medical_location_by_id

Get a single Location from Canvas by its id. Returns the FHIR R4 Location resource. Returns: resourceType, id, status, name, alias. Required: id.

list_all_canvas_medical_locations

Search Location resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Location resources, one page at a time. Returns: resourceType, id, status, name, alias. No parameters are required.

canvas_medical_locations_search

Search Location resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Location resources, one page at a time. Returns: resourceType, id, status, name, alias. No parameters are required.

get_single_canvas_medical_media_by_id

Get a single Media from Canvas by its id. Returns the FHIR R4 Media resource. Returns: resourceType, id, status, subject, encounter. Required: id.

list_all_canvas_medical_media

Search Media resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Media resources, one page at a time. Returns: resourceType, id, status, subject, encounter. No parameters are required.

canvas_medical_media_search

Search Media resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Media resources, one page at a time. Returns: resourceType, id, status, subject, encounter. No parameters are required.

create_a_canvas_medical_media

Create a Media in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, subject, content.

get_single_canvas_medical_medication_by_id

Get a single Medication from Canvas by its id. Returns the FHIR R4 Medication resource. Returns: resourceType, id, code. Required: id.

list_all_canvas_medical_medications

Search Medication resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Medication resources, one page at a time. Needs either code or _text. Returns: resourceType, id, code. Required: one of code or _text.

canvas_medical_medications_search

Search Medication resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Medication resources, one page at a time. Needs either code or _text. Returns: resourceType, id, code. Required: one of code or _text.

get_single_canvas_medical_medication_dispense_by_id

Get a single MedicationDispense from Canvas by its id. Returns the FHIR R4 MedicationDispense resource. Returns: resourceType, id, status, medicationCodeableConcept, subject. Required: id.

list_all_canvas_medical_medication_dispenses

Search MedicationDispense resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 MedicationDispense resources, one page at a time. Returns: resourceType, id, status, medicationCodeableConcept, subject. No parameters are required.

canvas_medical_medication_dispenses_search

Search MedicationDispense resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 MedicationDispense resources, one page at a time. Returns: resourceType, id, status, medicationCodeableConcept, subject. No parameters are required.

get_single_canvas_medical_medication_request_by_id

Get a single MedicationRequest from Canvas by its id. Returns the FHIR R4 MedicationRequest resource. Returns: resourceType, id, status, intent, category. Required: id.

list_all_canvas_medical_medication_requests

Search MedicationRequest resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 MedicationRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.

canvas_medical_medication_requests_search

Search MedicationRequest resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 MedicationRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.

get_single_canvas_medical_medication_statement_by_id

Get a single MedicationStatement from Canvas by its id. Returns the FHIR R4 MedicationStatement resource. Returns: id, status, medicationCodeableConcept, subject, effectivePeriod. Required: id.

list_all_canvas_medical_medication_statements

Search MedicationStatement resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 MedicationStatement resources, one page at a time. Returns: id, status, medicationCodeableConcept, subject, effectivePeriod. No parameters are required.

canvas_medical_medication_statements_search

Search MedicationStatement resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 MedicationStatement resources, one page at a time. Returns: id, status, medicationCodeableConcept, subject, effectivePeriod. No parameters are required.

create_a_canvas_medical_medication_statement

Create a MedicationStatement in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, subject.

update_a_canvas_medical_medication_statement_by_id

Replace a MedicationStatement in Canvas by sending the full FHIR MedicationStatement resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, subject.

get_single_canvas_medical_observation_by_id

Get a single Observation from Canvas by its id. Returns the FHIR R4 Observation resource. Returns: resourceType, id, status, category, code. Required: id.

list_all_canvas_medical_observations

Search Observation resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Observation resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.

canvas_medical_observations_search

Search Observation resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Observation resources, one page at a time. Returns: resourceType, id, status, category, code. No parameters are required.

create_a_canvas_medical_observation

Create a Observation in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Send a full vital panel as one request per observation set; see the Canvas vitals guide. Required: status, code, subject.

get_single_canvas_medical_organization_by_id

Get a single Organization from Canvas by its id. Returns the FHIR R4 Organization resource. Returns: resourceType, id, type, active, name. Required: id.

list_all_canvas_medical_organizations

Search Organization resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Organization resources, one page at a time. Returns: resourceType, id, type, active, name. No parameters are required.

canvas_medical_organizations_search

Search Organization resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Organization resources, one page at a time. Returns: resourceType, id, type, active, name. No parameters are required.

get_single_canvas_medical_patient_by_id

Get a single Patient from Canvas by its id. Returns the FHIR R4 Patient resource. The birthsex extension carries sex assigned at birth. Returns: resourceType, id, active, name, telecom. Required: id.

list_all_canvas_medical_patients

Search Patient resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Patient resources, one page at a time. Inactive patients are included unless you pass active=true. Returns: resourceType, id, active, name, telecom. No parameters are required.

canvas_medical_patients_search

Search Patient resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Patient resources, one page at a time. Inactive patients are included unless you pass active=true. Returns: resourceType, id, active, name, telecom. No parameters are required.

create_a_canvas_medical_patient

Create a Patient in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. The birthsex extension is required. Required: resourceType, extension, name, gender, birthDate.

update_a_canvas_medical_patient_by_id

Replace a Patient in Canvas by sending the full FHIR Patient resource (PUT). Canvas answers 200 OK with an empty body. The birthsex extension is required. Required: id, resourceType, extension, name, gender, birthDate.

get_single_canvas_medical_payment_notice_by_id

Get a single PaymentNotice from Canvas by its id. Returns the FHIR R4 PaymentNotice resource. Returns: id, status, request, created, payment. Required: id.

list_all_canvas_medical_payment_notices

Search PaymentNotice resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 PaymentNotice resources, one page at a time. Returns: id, status, request, created, payment. No parameters are required.

canvas_medical_payment_notices_search

Search PaymentNotice resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 PaymentNotice resources, one page at a time. Returns: id, status, request, created, payment. No parameters are required.

create_a_canvas_medical_payment_notice

Create a PaymentNotice in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, request, created, payment, recipient, amount.

get_single_canvas_medical_practitioner_by_id

Get a single Practitioner from Canvas by its id. Returns the FHIR R4 Practitioner resource. Returns: id, active, name, telecom, address. Required: id.

list_all_canvas_medical_practitioners

Search Practitioner resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Practitioner resources, one page at a time. Only schedulable, active practitioners come back by default; set include-non-schedulable-practitioners=true or active=false to widen the search. Returns: id, active, name, telecom, address. No parameters are required.

canvas_medical_practitioners_search

Search Practitioner resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Practitioner resources, one page at a time. Only schedulable, active practitioners come back by default; set include-non-schedulable-practitioners=true or active=false to widen the search. Returns: id, active, name, telecom, address. No parameters are required.

create_a_canvas_medical_practitioner

Create a Practitioner in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: name, telecom, birthDate.

update_a_canvas_medical_practitioner_by_id

Replace a Practitioner in Canvas by sending the full FHIR Practitioner resource (PUT). Canvas answers 200 OK with an empty body. Required: id, name, telecom, birthDate.

get_single_canvas_medical_procedure_by_id

Get a single Procedure from Canvas by its id. Returns the FHIR R4 Procedure resource. Returns: resourceType, id, basedOn, status, code. Required: id.

list_all_canvas_medical_procedures

Search Procedure resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Procedure resources, one page at a time. Returns: resourceType, id, basedOn, status, code. No parameters are required.

canvas_medical_procedures_search

Search Procedure resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Procedure resources, one page at a time. Returns: resourceType, id, basedOn, status, code. No parameters are required.

get_single_canvas_medical_provenance_by_id

Get a single Provenance from Canvas by its id. Returns the FHIR R4 Provenance resource. Returns: resourceType, id, target, recorded, location. Required: id.

list_all_canvas_medical_provenances

Search Provenance resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Provenance resources, one page at a time. Returns: resourceType, id, target, recorded, location. No parameters are required.

canvas_medical_provenances_search

Search Provenance resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Provenance resources, one page at a time. Returns: resourceType, id, target, recorded, location. No parameters are required.

get_single_canvas_medical_questionnaire_by_id

Get a single Questionnaire from Canvas by its id. Returns the FHIR R4 Questionnaire resource. Returns: resourceType, id, name, status, description. Required: id.

list_all_canvas_medical_questionnaires

Search Questionnaire resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Questionnaire resources, one page at a time. Returns: resourceType, id, name, status, description. No parameters are required.

canvas_medical_questionnaires_search

Search Questionnaire resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Questionnaire resources, one page at a time. Returns: resourceType, id, name, status, description. No parameters are required.

get_single_canvas_medical_questionnaire_response_by_id

Get a single QuestionnaireResponse from Canvas by its id. Returns the FHIR R4 QuestionnaireResponse resource. Returns: resourceType, id, questionnaire, _questionnaire, status. Required: id.

list_all_canvas_medical_questionnaire_responses

Search QuestionnaireResponse resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 QuestionnaireResponse resources, one page at a time. Returns: resourceType, id, questionnaire, _questionnaire, status. No parameters are required.

canvas_medical_questionnaire_responses_search

Search QuestionnaireResponse resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 QuestionnaireResponse resources, one page at a time. Returns: resourceType, id, questionnaire, _questionnaire, status. No parameters are required.

create_a_canvas_medical_questionnaire_response

Create a QuestionnaireResponse in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, subject.

update_a_canvas_medical_questionnaire_response_by_id

Replace a QuestionnaireResponse in Canvas by sending the full FHIR QuestionnaireResponse resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, subject.

get_single_canvas_medical_related_person_by_id

Get a single RelatedPerson from Canvas by its id. Returns the FHIR R4 RelatedPerson resource. Returns: resourceType, id, active, patient, relationship. Required: id.

list_all_canvas_medical_related_persons

Search RelatedPerson resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 RelatedPerson resources, one page at a time. Returns: resourceType, id, active, patient, relationship. No parameters are required.

canvas_medical_related_persons_search

Search RelatedPerson resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 RelatedPerson resources, one page at a time. Returns: resourceType, id, active, patient, relationship. No parameters are required.

get_single_canvas_medical_service_request_by_id

Get a single ServiceRequest from Canvas by its id. Returns the FHIR R4 ServiceRequest resource. Returns: resourceType, id, status, intent, category. Required: id.

list_all_canvas_medical_service_requests

Search ServiceRequest resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 ServiceRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.

canvas_medical_service_requests_search

Search ServiceRequest resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 ServiceRequest resources, one page at a time. Returns: resourceType, id, status, intent, category. No parameters are required.

get_single_canvas_medical_specimen_by_id

Get a single Specimen from Canvas by its id. Returns the FHIR R4 Specimen resource. Returns: resourceType, id, type, subject. Required: id.

list_all_canvas_medical_specimens

Search Specimen resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Specimen resources, one page at a time. Returns: resourceType, id, type, subject. No parameters are required.

canvas_medical_specimens_search

Search Specimen resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Specimen resources, one page at a time. Returns: resourceType, id, type, subject. No parameters are required.

get_single_canvas_medical_task_by_id

Get a single Task from Canvas by its id. Returns the FHIR R4 Task resource. Returns: id, status, priority, description, for. Required: id.

list_all_canvas_medical_tasks

Search Task resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Task resources, one page at a time. Returns: id, status, priority, description, for. No parameters are required.

canvas_medical_tasks_search

Search Task resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Task resources, one page at a time. Returns: id, status, priority, description, for. No parameters are required.

create_a_canvas_medical_task

Create a Task in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, description, requester, intent.

update_a_canvas_medical_task_by_id

Replace a Task in Canvas by sending the full FHIR Task resource (PUT). Canvas answers 200 OK with an empty body. Required: id, status, description, requester, intent.

create_a_canvas_medical_coverage_eligibility_request

Create a CoverageEligibilityRequest in Canvas. Canvas answers 201 Created with an empty body and puts the new id in the Location response header. Required: status, purpose, patient, created, insurer, insurance.

list_all_canvas_medical_schedules

Search Schedule resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Schedule resources, one page at a time. Use a returned id as the schedule parameter of the Slot search. Returns: resourceType, id, actor, comment. No parameters are required.

canvas_medical_schedules_search

Search Schedule resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Schedule resources, one page at a time. Use a returned id as the schedule parameter of the Slot search. Returns: resourceType, id, actor, comment. No parameters are required.

list_all_canvas_medical_slots

Search Slot resources in Canvas with FHIR search parameters. Returns the matching FHIR R4 Slot resources, one page at a time. Defaults: duration 20 minutes, start today (UTC), end 7 days after start. Returns: resourceType, schedule, status, start, end. Required: schedule.

canvas_medical_slots_search

Search Slot resources with a form-encoded POST so search values stay out of the URL. Takes the same search parameters as the list method and returns the matching FHIR R4 Slot resources, one page at a time. Defaults: duration 20 minutes, start today (UTC), end 7 days after start. Returns: resourceType, schedule, status, start, end. Required: schedule.

list_all_canvas_medical_capability_statements

Get the FHIR CapabilityStatement that Canvas publishes for its FHIR R4 server. Returns one CapabilityStatement object that lists the supported resource types and interactions. Returns: resourceType, status, fhirVersion, format, rest. No parameters are required.

create_a_canvas_medical_claim_activity_log_item

Add an activity log item (a comment) to a Claim. Send a FHIR Parameters resource with exactly one parameter named comment, whose valueString is the text. The token needs the Claim.add-activity-log-item scope. Canvas does not document the response body. Returns: resourceType, parameter. Required: claim_id, resourceType, parameter.

create_a_canvas_medical_practitioner_reset_password_email

Send a reset password email to a Canvas Practitioner. Send a FHIR Parameters resource with no parameters. The token needs the Practitioner.send-reset-password-email scope. Canvas does not document the response body. Returns: resourceType, parameter. Required: practitioner_id, resourceType.

create_a_canvas_medical_diagnostic_report_lab_report

Create a lab report, its lab tests and values, and a stored PDF in one request. Send a FHIR Parameters resource with one labReport parameter and one labTestCollection parameter per test. The token needs the DiagnosticReport.create-lab-report scope. Canvas answers 201 Created with a Parameters resource that points to the new DiagnosticReport. Lab tests are visible in Canvas but cannot be read back through the FHIR API; only lab values can (Observation). Returns: resourceType, parameter. Required: resourceType, parameter.

create_a_canvas_medical_bulk_export

Start a FHIR Bulk Data export of the electronic health information of all patients. The export runs as a background job and writes NDJSON files; poll the job with the bulk_export_jobs resource. The token needs a system or user read scope such as system/*.read. Returns: the empty kick-off response. No parameters are required.

create_a_canvas_medical_patient_export

Start a FHIR Bulk Data export of the electronic health information of one patient. The export runs as a background job and writes NDJSON files; poll the job with the bulk_export_jobs resource. The token needs a system or user read scope such as system/*.read. Returns: the empty kick-off response. Required: patient_id.

create_a_canvas_medical_group_export

Start a FHIR Bulk Data export of the electronic health information of the patients in one Group. The export runs as a background job and writes NDJSON files; poll the job with the bulk_export_jobs resource. The token needs a system or user read scope such as system/*.read. Returns: the empty kick-off response. Required: group_id.

get_single_canvas_medical_bulk_export_job_by_id

Get the status of a FHIR Bulk Data export job. While the job runs the answer is an in-progress status; when it finishes it lists the output file URLs. Returns: transactionTime, request, requiresAccessToken, output, error. Required: id.

delete_a_canvas_medical_bulk_export_job_by_id

Cancel a FHIR Bulk Data export job. Canvas documents no response body. Returns: nothing on success. Required: id.

Why Truto

Why use Truto’s MCP server for Canvas Medical

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Canvas Medical in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Canvas Medical account

Use Truto’s frontend SDK to connect your customer’s Canvas Medical account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Canvas Medical

Truto’s Proxy API is a 1-to-1 mapping of the Canvas Medical API. You call us, we call Canvas Medical, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Canvas Medical’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Canvas Medical on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication to Canvas Medical work through Truto?

Canvas uses OAuth 2.0 client credentials against each customer's Canvas instance (subdomain). Truto handles token exchange, refresh, and secure credential storage per end-user connection, so your product only needs to initiate the connect flow.

Which Canvas FHIR resources are supported?

Truto exposes the Canvas FHIR R4 surface, including Patient, Practitioner, Appointment, Schedule, Slot, Encounter, Condition, Observation, MedicationRequest, MedicationStatement, DiagnosticReport, DocumentReference, Media, Task, Questionnaire, QuestionnaireResponse, Coverage, Claim, PaymentNotice, AllergyIntolerance, Immunization, CarePlan, CareTeam, Communication, Consent, Goal, DetectedIssue, and more — with list, search, get, and (where Canvas allows) create and update operations.

Can I run bulk data exports for analytics or AI training?

Yes. Truto supports Canvas's Bulk Export operations at the system, Group, and Patient level. You can create an export job, poll its status, and delete it when complete — the output is NDJSON suitable for population health, RCM, or model training pipelines.

How fresh is the data — does Truto cache or proxy requests?

Truto proxies calls to Canvas in real time, so reads reflect the current state of the Canvas instance. For high-volume ingestion, use the Bulk Export tools instead of looping over list endpoints.

Can my integration write back to Canvas, or is it read-only?

Writes are fully supported for the resources Canvas permits, including creating Patients, Appointments, Conditions, Observations, DocumentReferences, Tasks, QuestionnaireResponses, Communications, Coverages, Claims, MedicationStatements, Immunizations, and more, plus updates on most of these resources.

How are search and pagination handled across Canvas endpoints?

Each supported resource has a dedicated search tool that accepts FHIR search parameters, and Truto normalizes pagination across list endpoints so you can iterate large result sets without handling Canvas's cursor tokens directly.

Canvas Medical

Get Canvas Medical integrated into your app

Our team understands what it takes to make a Canvas Medical integration successful. A short, crisp 30 minute call with folks who understand the problem.