Reading from GitLab...
Reading from GitLab...
Every tool on the production MCP gateway, by hospital system. Descriptions come from the service code, read live: nothing here is written by hand.
Gateway: https://orbit-medical-systems.orbit-poc.com (production), read live.
Code: development db5614ac, 2026-10-12 03:34 GMT+8 · production db5614ac, 2026-10-12 03:34 GMT+8 (same commit)
Step by step, from no key to the first answer. Use an MCP client (Claude, Hermes or any other) and call the tools directly.
Ask the MCP admin for a key. The admin opens https://orbit-medical-systems.orbit-poc.com/mcp/admin and:


You should see 應該看到: a long code that starts with hismcp_gk_, and the date it ends.
Open https://orbit-medical-systems.orbit-poc.com/api/mcp/v1/systems in a browser. It needs no key.
You should see 應該看到: text that starts with [{"scheme":: the list of addresses.
If not 如果沒有: your network blocks the gateway. Ask for the VPN, or ask the MCP admin to allow your address.
Each address is one group of tools. Pick the one you need; one client entry per address. staff-schedule, nhi-ops and comms are chat flows: they take a chat identity instead of a key (see the usage guide, section 3).
| Name | Purpose | Tools | Services | MCP address |
|---|---|---|---|---|
analytics 數據分析與 AI | Governed analytics and AI: FHIR exchange, data platform, BI reports, AI models. | 44 | ai-inference, bi-reporting, data-platform, fhir-exchange | https://orbit-medical-systems.orbit-poc.com/mcp/analytics/ |
ancillary 醫療輔助(檢驗、影像、檢查) | Order fulfilment: laboratory, radiology and exam scheduling; microbiology and pathology reports and MDRO flags; sterile supply (CSSD) status (read only). | 490 | cssd, diagnostics, exam-scheduling, laboratory, micropath, radiology | https://orbit-medical-systems.orbit-poc.com/mcp/ancillary/ |
audit | Read the audit trail: events, verification runs, a patient's access report, review-queue items and archive query results; start a chain verification; assign a review item to a reviewer. | 10 | audit | https://orbit-medical-systems.orbit-poc.com/mcp/audit/ |
clinical 臨床診療 | Run a visit and inpatient stay: workspace, orders, notes, CDSS, queue, nursing, ER, admissions, surgery, closed-loop safety. | 389 | adt, bff, cdss, closed-loop-safety, emergency, emr, nursing, orders, queue, surgery | https://orbit-medical-systems.orbit-poc.com/mcp/clinical/ |
comms 客服通話 | Call-centre staff: work the outbound call list, call patients, book callbacks, read call logs and contact records, search call transcripts, and keep meeting minutes and decisions. | 35 | comms, notification | https://orbit-medical-systems.orbit-poc.com/mcp/comms/ |
finance 批價與健保申報 | Price a visit, take payment and submit NHI claims. | 134 | billing, erpbridge, nhi-claims, payment | https://orbit-medical-systems.orbit-poc.com/mcp/finance/ |
knowledge 規範與知識文件 | Search and read controlled policy documents (SOP, NHI review notes, accreditation standards, regulations), cite them, add notes, and draft and submit new versions. | 35 | knowledge | https://orbit-medical-systems.orbit-poc.com/mcp/knowledge/ |
laboratory 檢驗 | Laboratory orders, tracking, results, microbiology, pathology, send-out and QC. | 79 | laboratory | https://orbit-medical-systems.orbit-poc.com/mcp/laboratory/ |
leave-rulings 醫師請假與代診 | Read doctor leave requests and the cover ruling of each affected clinic session. | 3 | org-config | https://orbit-medical-systems.orbit-poc.com/mcp/leave-rulings/ |
microbiology 微生物檢驗 | Read microbiology: the culture worklist, one case worksheet, and a patient's culture reports. | 3 | micropath | https://orbit-medical-systems.orbit-poc.com/mcp/microbiology/ |
nhi-ops 健保卡作業 | NHI card operations (read-only): card transactions, uploads, workstation health and active alerts; MediCloud lookups remain unavailable until a stronger identity check is decided. | 6 | nhi-card, org-config | https://orbit-medical-systems.orbit-poc.com/mcp/nhi-ops/ |
notification 通知 | Send notices to patients and staff (one or many recipients) and check delivery. | 27 | notification | https://orbit-medical-systems.orbit-poc.com/mcp/notification/ |
office | Office email and official documents (公文): send email, dispatch a 公文, register, assign and close received documents, follow deadlines and receipts. | 11 | erpbridge | https://orbit-medical-systems.orbit-poc.com/mcp/office/ |
pharmacy 藥局 | Dispense and administer medications; manage stock. | 172 | inventory, pharmacy | https://orbit-medical-systems.orbit-poc.com/mcp/pharmacy/ |
reference 共用主檔 | Master data for staff: codes and dictionaries, orderables, fees and prices, the organization, beds, clinic sessions, parameters, staff, licences and privileges. | 208 | org-config, terminology | https://orbit-medical-systems.orbit-poc.com/mcp/reference/ |
registry 病人與掛號 | Find patients and manage encounters, registration, NHI-card visits and healthcare-certificate (HCA) signatures. | 210 | hca, nhi-card, patient-registry, registration | https://orbit-medical-systems.orbit-poc.com/mcp/registry/ |
staff-schedule 醫師門診班表 | Doctors: check your clinic sessions and file or withdraw leave by chat. | 6 | org-config | https://orbit-medical-systems.orbit-poc.com/mcp/staff-schedule/ |
workforce 人力排班 | Build and publish nursing/medical staff rosters, leave, overtime, nurse-to-patient ratios and the float pool. | 116 | workforce | https://orbit-medical-systems.orbit-poc.com/mcp/workforce/ |
Replace hismcp_gk_YOUR-KEY with your key. The address must end with /.
claude mcp add --scope user --transport http his-clinical https://orbit-medical-systems.orbit-poc.com/mcp/clinical/ --header "Authorization: Bearer hismcp_gk_YOUR-KEY"
claude mcp listNeeds Node.js 18 or newer (node -v). Settings, Developer, Edit Config, then paste into claude_desktop_config.json (merge with any existing mcpServers), save, and quit Claude Desktop completely before opening it again.
{
"mcpServers": {
"his-clinical": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://orbit-medical-systems.orbit-poc.com/mcp/clinical/",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer hismcp_gk_YOUR-KEY"
}
}
}
}Start it, then on the left: Transport Type Streamable HTTP, URL below, Authentication, header Authorization with the value below, Connect.
npx @modelcontextprotocol/inspectorhttps://orbit-medical-systems.orbit-poc.com/mcp/clinical/Bearer hismcp_gk_YOUR-KEYYou should see 應該看到: Claude Code: his-clinical with ✓ Connected. Claude Desktop: the entry running under Settings, Developer. Inspector: a green dot and Connected.
Ask your assistant: “Use his-clinical. Read its system card and tell me in five short points what you can do.” In Inspector: Tools, List Tools, pick a read tool, Run Tool. An empty list [] is a success: there is no data yet.
You should see 應該看到: a short list of what the system can do, or the tool's answer marked success.
Full reference (endpoints, chat identity, tokens, security): docs/mcp-usage-guide.md in the medical repo.
Every tool on the gateway, by hospital system, read live from the service code.
Every system and its MCP tools, numbered 1 to the system total, with what each tool does and the API it calls. Descriptions come from the code.
Route map: production code 466c58ff0 (committed 2026-10-11 05:12 GMT+8), built 2026-10-11 06:03 GMT+8.
| # | Tool | API it calls | Access |
|---|---|---|---|
| 1 | workforce.post_anesthesia_bookingsHold an anesthesia team for an operation | POST /api/workforce/v1/anesthesia-bookings | write |
| 2 | workforce.delete_anesthesia_bookings_booking_idRelease an anesthesia team | DELETE /api/workforce/v1/anesthesia-bookings/{booking_id} | write |
| 3 | workforce.get_anesthesia_rosterAnesthesia Roster | GET /api/workforce/v1/anesthesia-roster | read |
| 4 | workforce.get_anesthesia_roster_freeHow many anesthesia teams are free in a time window of a day | GET /api/workforce/v1/anesthesia-roster/free | read |
| 5 | workforce.get_calendarWeekday and day type of every day of a month | GET /api/workforce/v1/calendar | read |
| 6 | workforce.get_certificate_requestsCertificate requests for HR, by status | GET /api/workforce/v1/certificate-requests | read |
| 7 | workforce.get_certificate_requests_facts_staff_idThe ledger facts a certificate for this person would use (HR preview) | GET /api/workforce/v1/certificate-requests/facts/{staff_id} | read |
| 8 | workforce.get_certificate_templatesConfigured certificate wording | GET /api/workforce/v1/certificate-templates | read |
| 9 | workforce.put_certificate_templates_kindSet the wording of a certificate kind; placeholders: name, join_date, leave_date, role, unit, issue_date, doc_ref | PUT /api/workforce/v1/certificate-templates/{kind} | write |
| 10 | workforce.get_clock_importsImported clock records reconciled with the roster, leave and day type (list_attendance) | GET /api/workforce/v1/clock-imports | read |
| 11 | workforce.post_clock_imports_batchImport Clock | POST /api/workforce/v1/clock-imports:batch | write |
| 12 | workforce.post_clock_imports_notifyTell the staff members and their manager about the selected clock rows (through notification) | POST /api/workforce/v1/clock-imports:notify | write |
| 13 | workforce.post_clock_imports_reviewMark clock rows reviewed | POST /api/workforce/v1/clock-imports:review | write |
| 14 | workforce.post_clock_imports_import_id_correctCorrect a clock row with a reason; writes worked hours and who changed it (correct_attendance) | POST /api/workforce/v1/clock-imports/{import_id}:correct | write |
| 15 | workforce.get_complianceCompliance | GET /api/workforce/v1/compliance | read |
| 16 | workforce.get_compliance_summaryLabour-law breach counts per staff member and the ratio breaches of a period | GET /api/workforce/v1/compliance/summary | read |
| 17 | workforce.get_establishment編制 entries in force on a date, or every entry with history=true | GET /api/workforce/v1/establishment | read |
| 18 | workforce.put_establishmentSet the approved headcount for a unit and profession from a date; history is kept | PUT /api/workforce/v1/establishment | write |
| 19 | workforce.get_float_pool_availableFloat members for a day or a gap: eligible ones with details, ineligible ones with what they miss (TWM list_float_pool) | GET /api/workforce/v1/float-pool/available | read |
| 20 | workforce.post_float_poolsCreate Pool | POST /api/workforce/v1/float-pools | write |
| 21 | workforce.post_float_pools_pool_id_membersAdd a member to a float pool (add_float_pool_member) | POST /api/workforce/v1/float-pools/{pool_id}/members | write |
| 22 | workforce.patch_float_pools_pool_id_members_member_idUpdate a float pool member's availability, skills or status (update_float_pool_member) | PATCH /api/workforce/v1/float-pools/{pool_id}/members/{member_id} | write |
| 23 | workforce.get_gapsStaffing gaps by status, unit and dates, with the absent staff member (list_roster_gaps) | GET /api/workforce/v1/gaps | read |
| 24 | workforce.post_gapsRaise Gap | POST /api/workforce/v1/gaps | write |
| 25 | workforce.post_gaps_gap_id_allocateAllocate | POST /api/workforce/v1/gaps/{gap_id}:allocate | write |
| 26 | workforce.get_gaps_gap_id_offersList Gap Offers | GET /api/workforce/v1/gaps/{gap_id}/offers | read |
| 27 | workforce.post_gaps_gap_id_offersOffer Shift | POST /api/workforce/v1/gaps/{gap_id}/offers | write |
| 28 | workforce.get_hours_reports_monthlyOne row per staff member with required, rostered, worked, overtime and leave hours | GET /api/workforce/v1/hours-reports/monthly | read |
| 29 | workforce.get_hours_reports_night_shiftsEvening and night shift counts per staff member for a month | GET /api/workforce/v1/hours-reports/night-shifts | read |
| 30 | workforce.get_hours_settingsThe labour-law hour limits and ratio thresholds in force | GET /api/workforce/v1/hours-settings | read |
| 31 | workforce.put_hours_settingsChange hour limits and ratio thresholds from a date (kept as effective-dated parameters) | PUT /api/workforce/v1/hours-settings | write |
| 32 | workforce.get_indicatorsIndicators | GET /api/workforce/v1/indicators | read |
| 33 | workforce.get_indicators_hrHR indicators for a month, aggregate only, for bi-reporting and data-platform | GET /api/workforce/v1/indicators/hr | read |
| 34 | workforce.get_loadWard load cards: open gaps and the ratio light per ward for a day and shift | GET /api/workforce/v1/load | read |
| 35 | workforce.get_me_appraisalsYour appraisals; supervisor remarks show once final | GET /api/workforce/v1/me/appraisals | read |
| 36 | workforce.get_me_certificate_requestsYour certificate requests and issued documents | GET /api/workforce/v1/me/certificate-requests | read |
| 37 | workforce.post_me_certificate_requestsAsk HR for an employment (在職) or service (服務) certificate | POST /api/workforce/v1/me/certificate-requests | write |
| 38 | workforce.get_me_credentialsYour licences, credit progress and practice registration | GET /api/workforce/v1/me/credentials | read |
| 39 | workforce.get_me_profileYour own staff record and contact details | GET /api/workforce/v1/me/profile | read |
| 40 | workforce.patch_me_profileChange your own contact details (phone, address, emergency contact, email) | PATCH /api/workforce/v1/me/profile | write |
| 41 | workforce.get_me_promotionsYour promotion and 能力分級 advancement requests | GET /api/workforce/v1/me/promotions | read |
| 42 | workforce.get_me_rosterMy published shifts of a month with times, version and changed days | GET /api/workforce/v1/me/roster | read |
| 43 | workforce.get_me_shift_requestsMy shift requests of a month with the request deadline (list_pre_requests) | GET /api/workforce/v1/me/shift-requests | read |
| 44 | workforce.post_me_shift_requestsAdd my shift request: 409 after the deadline, 422 above the monthly maximum | POST /api/workforce/v1/me/shift-requests | write |
| 45 | workforce.post_offers_offer_id_replyReply Offer | POST /api/workforce/v1/offers/{offer_id}:reply | write |
| 46 | workforce.get_overtime_recordsThe unit overtime register of a month (list_overtime_records) | GET /api/workforce/v1/overtime-records | read |
| 47 | workforce.post_overtime_recordsFile an overtime record (times, reason, `filed_late`, corrections); no pay fields | POST /api/workforce/v1/overtime-records | write |
| 48 | workforce.get_practice_registrations執業登記 renewal worklist | GET /api/workforce/v1/practice-registrations | read |
| 49 | workforce.post_practice_registrations_refreshSync registrations from org-config licences and send expiry reminders | POST /api/workforce/v1/practice-registrations:refresh | write |
| 50 | workforce.get_ratio_exceptionsList Ratio Exceptions | GET /api/workforce/v1/ratio-exceptions | read |
| 51 | workforce.post_ratio_exceptionsRecord Ratio Exception | POST /api/workforce/v1/ratio-exceptions | write |
| 52 | workforce.post_ratio_computeRatio Compute | POST /api/workforce/v1/ratio:compute | write |
| 53 | workforce.get_ratio_breachesRatio breaches on a day or over a period, optionally for one unit | GET /api/workforce/v1/ratio/breaches | read |
| 54 | workforce.put_ratio_censusCorrect a shift's census with a reason; the ADT count is kept and the ratio recomputed | PUT /api/workforce/v1/ratio/census | write |
| 55 | workforce.get_ratio_exceptionsRecorded ratio exceptions of a unit and period | GET /api/workforce/v1/ratio/exceptions | read |
| 56 | workforce.post_ratio_exceptionsRecord a ratio exception with the reason and actions taken (TWM record_ratio_exception) | POST /api/workforce/v1/ratio/exceptions | write |
| 57 | workforce.get_ratio_publicationsMonthly ratio publications | GET /api/workforce/v1/ratio/publications | read |
| 58 | workforce.post_ratio_publicationsPublish a month's ratio per ward and shift; 409 when the month is already published | POST /api/workforce/v1/ratio/publications | write |
| 59 | workforce.get_reports_accreditation_workforceAccreditation workforce report: aggregates and definitions, never staff-level rows | GET /api/workforce/v1/reports/accreditation-workforce | read |
| 60 | workforce.get_roster_updatesRoster updates of a unit, proposed ones first | GET /api/workforce/v1/roster-updates | read |
| 61 | workforce.post_roster_updatesChange a published roster (TWM update_roster): applied as a new version, or proposed | POST /api/workforce/v1/roster-updates | write |
| 62 | workforce.get_rostersA unit's rosters by month with status and version | GET /api/workforce/v1/rosters | read |
| 63 | workforce.post_rostersCreate Roster | POST /api/workforce/v1/rosters | write |
| 64 | workforce.post_rosters_roster_id_checkCheck a roster against the labour-law limits, the ratio and shortfall | POST /api/workforce/v1/rosters/{roster_id}:check | write |
| 65 | workforce.post_rosters_roster_id_generateGenerate | POST /api/workforce/v1/rosters/{roster_id}:generate | write |
| 66 | workforce.get_rosters_roster_id_gridThe month grid: staff rows, day cells with leave, hours lights and the daily ratio row | GET /api/workforce/v1/rosters/{roster_id}/grid | read |
| 67 | workforce.get_rosters_roster_id_shiftsRoster Shifts | GET /api/workforce/v1/rosters/{roster_id}/shifts | read |
| 68 | workforce.post_rosters_roster_id_shifts_batchSave manual edits and locks of a draft roster (optimistic lock on `lastupdated`) | POST /api/workforce/v1/rosters/{roster_id}/shifts:batch | write |
| 69 | workforce.get_rosters_roster_id_versionsPublished versions of the roster's unit and month, with affected staff counts | GET /api/workforce/v1/rosters/{roster_id}/versions | read |
| 70 | workforce.get_rosters_roster_id_versions_version_diffCells a version changed against the version before it, and the affected staff | GET /api/workforce/v1/rosters/{roster_id}/versions/{version}/diff | read |
| 71 | workforce.get_shift_offersShift offers by status, unit or staff member | GET /api/workforce/v1/shift-offers | read |
| 72 | workforce.post_shift_offersOffer an open shift to a staff member (TWM send_shift_offer); no pay amount | POST /api/workforce/v1/shift-offers | write |
| 73 | workforce.post_shift_offers_offer_id_releaseRelease a held offer to the named staff member, or to anyone eligible | POST /api/workforce/v1/shift-offers/{offer_id}:release | write |
| 74 | workforce.post_shift_offers_offer_id_respondAccept or decline an offer; accepting re-checks eligibility and the labour-law limits and writes the shift into a new roster version | POST /api/workforce/v1/shift-offers/{offer_id}:respond | write |
| 75 | workforce.post_shift_offers_offer_id_withdrawWithdraw an offer that has not been answered | POST /api/workforce/v1/shift-offers/{offer_id}:withdraw | write |
| 76 | workforce.post_shift_requestsAdd a shift request: 409 after the deadline, 422 above the monthly maximum | POST /api/workforce/v1/shift-requests | write |
| 77 | workforce.post_shift_typesCreate Shift Type | POST /api/workforce/v1/shift-types | write |
| 78 | workforce.patch_shift_types_shift_type_idUpdate a shift code's name, times and night flag (save_shift_code) | PATCH /api/workforce/v1/shift-types/{shift_type_id} | write |
| 79 | workforce.get_staffFind staff by name for the HR pickers (the service keeps a cached name per person) | GET /api/workforce/v1/staff | read |
| 80 | workforce.get_staff_eventsLedger and HR worklist: filter by apply_status to see what still needs attention | GET /api/workforce/v1/staff-events | read |
| 81 | workforce.post_staff_eventsRecord a join, leave, transfer or other staff event and apply it to org-config | POST /api/workforce/v1/staff-events | write |
| 82 | workforce.post_staff_events_event_id_retry_applyRetry applying a pending or failed event; an applied event is returned unchanged | POST /api/workforce/v1/staff-events/{event_id}:retry-apply | write |
| 83 | workforce.get_staff_events_event_id_attemptsAudit of every record, apply and retry of one event | GET /api/workforce/v1/staff-events/{event_id}/attempts | read |
| 84 | workforce.get_staff_practitioner_id_creditsCredit window, earned, required, remaining, readiness (earned read from org-config) | GET /api/workforce/v1/staff/{practitioner_id}/credits | read |
| 85 | workforce.get_staff_practitioner_id_employmentEmployment status and unit derived from applied ledger events | GET /api/workforce/v1/staff/{practitioner_id}/employment | read |
| 86 | workforce.get_staff_staff_idA staff profile by id or staff code (TWM get_staff_profile) | GET /api/workforce/v1/staff/{staff_id} | read |
| 87 | workforce.patch_staff_staff_id_competencyUpdate a staff member's level, competencies and duty note after a review | PATCH /api/workforce/v1/staff/{staff_id}/competency | write |
| 88 | workforce.get_staff_staff_id_level_history能力分級 history of a staff member, oldest first | GET /api/workforce/v1/staff/{staff_id}/level-history | read |
| 89 | workforce.get_staff_staff_id_profileStaff Profile | GET /api/workforce/v1/staff/{staff_id}/profile | read |
| 90 | workforce.get_statistics_expiryLicences expiring (or lapsed) within N days with the credit shortfall, by due date | GET /api/workforce/v1/statistics/expiry | read |
| 91 | workforce.get_statistics_headcount編制 vs actual and vacancy per unit and profession; no vacancy where 編制 is not set | GET /api/workforce/v1/statistics/headcount | read |
| 92 | workforce.post_statistics_headcount_snapshotStore a headcount snapshot per unit for a date (replaces that date's snapshot) | POST /api/workforce/v1/statistics/headcount:snapshot | write |
| 93 | workforce.get_statistics_headcount_staffThe staff behind a headcount figure (HR only); the access is audited | GET /api/workforce/v1/statistics/headcount/staff | read |
| 94 | workforce.get_statistics_mandatory_trainingMandatory training expiring within N days, read from org-config, soonest first | GET /api/workforce/v1/statistics/mandatory-training | read |
| 95 | workforce.get_statistics_turnoverTurnover rate (離職率) for a period; the response names the formula used | GET /api/workforce/v1/statistics/turnover | read |
| 96 | workforce.get_unitsList Units | GET /api/workforce/v1/units | read |
| 97 | workforce.post_unitsCreate Unit | POST /api/workforce/v1/units | write |
| 98 | workforce.get_units_unit_id_ratioRatio of every shift and the whole day, with beds, occupancy, admissions and discharges | GET /api/workforce/v1/units/{unit_id}/ratio | read |
| 99 | workforce.get_units_unit_id_rosterThe published roster of a unit on a day (TWM get_roster), or its shifts in a period | GET /api/workforce/v1/units/{unit_id}/roster | read |
| 100 | workforce.get_units_unit_id_shift_typesUnit Shift Types | GET /api/workforce/v1/units/{unit_id}/shift-types | read |
| 101 | workforce.get_units_unit_id_staffStaff of a unit for a month with level, order, days off and required and rostered hours | GET /api/workforce/v1/units/{unit_id}/staff | read |
| 102 | workforce.get_work_hoursRostered, worked, overtime and leave hours of a staff member per day type (TWM get_work_hours) | GET /api/workforce/v1/work-hours | read |
| 103 | workforce.post_worked_hours_recordRecord Hours | POST /api/workforce/v1/worked-hours:record | write |
5 of 108 APIs of this system have no MCP tool yet.
No MCP tools yet 尚無 MCP 工具 (21): 27 感染管制監測系統 · 34 重症加護系統 · 40 化學治療系統 · 41 放射腫瘤系統 · 42 核子醫學系統 · 43 血液透析系統 · 44 產房與嬰兒室系統 · 45 復健系統 · 46 呼吸治療系統 · 47 牙科系統 · 48 預防保健與癌症篩檢系統 · 49 疫苗注射系統 · 53 抗生素管制系統 · 61 介面整合引擎 · 67 全國預防接種資訊系統(NIIS) · 74 健康檢查系統 · 77 陪病與訪客管理系統 · 79 病人傳送系統 · 84 數位看板系統 · 89 太平間管理系統 · 91 醫療物流機器人系統
To do: tools on the gateway that are not placed under a hospital system yet, so they are not counted above. Each one waits for a ruling on its system; once placed, it moves into Tools by system.
| GET | /api/safety/v1/dashboard | Dashboard | read | closed-loop-safety.get_dashboard | clinical |
| POST | /api/safety/v1/feedings:check | Feeding Check | write | closed-loop-safety.post_feedings_check | clinical |
| POST | /api/safety/v1/identity-checks | Identity Check | write | closed-loop-safety.post_identity_checks | clinical |
| POST | /api/safety/v1/loops | Open Loop Route | create | closed-loop-safety.post_loops | clinical |
| POST | /api/safety/v1/loops/{instance_id}:exception | Loop Exception | write | closed-loop-safety.post_loops_instance_id_exception | clinical |
| POST | /api/safety/v1/loops/{instance_id}/steps/{step_code}:advance | Advance | write | closed-loop-safety.post_loops_instance_id_steps_step_code_advance | clinical |
| POST | /api/safety/v1/milk-containers | Create Milk | write | closed-loop-safety.post_milk_containers | clinical |
| POST | /api/safety/v1/overdue:sweep | Overdue Sweep | write | closed-loop-safety.post_overdue_sweep | clinical |