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 | billing.get_charge_itemsList Charge Items | GET /api/billing/v1/charge-items | read |
| 2 | billing.get_charge_items_codeGet Charge Item | GET /api/billing/v1/charge-items/{code} | read |
| 3 | billing.get_charge_packagesList Charge Packages | GET /api/billing/v1/charge-packages | read |
| 4 | billing.post_charge_packagesCreate Charge Package | POST /api/billing/v1/charge-packages | write |
| 5 | billing.post_chargesManual Charge | POST /api/billing/v1/charges | write |
| 6 | billing.post_charges_charge_id_reverseReverse Charge Route | POST /api/billing/v1/charges/{charge_id}:reverse | write |
| 7 | billing.get_claim_data_encounters_encounter_idClaim Data | GET /api/billing/v1/claim-data/encounters/{encounter_id} | read |
| 8 | billing.get_claim_readinessEncounters with billable charges and what they miss before they can be claimed | GET /api/billing/v1/claim-readiness | read |
| 9 | billing.post_copay_calculateCalculate Copay | POST /api/billing/v1/copay:calculate | write |
| 10 | billing.get_encountersFind encounters by patient, chart number, 就醫序號, date, visit type and status | GET /api/billing/v1/encounters | read |
| 11 | billing.post_encounters_ingestTake a visit and its orders from the HIS and open its account (idempotent) | POST /api/billing/v1/encounters:ingest | write |
| 12 | billing.get_encounters_encounter_idAn encounter's header, orders, account, invoice versions and last price run | GET /api/billing/v1/encounters/{encounter_id} | read |
| 13 | billing.post_encounters_encounter_id_ready_for_pricingReady For Pricing | POST /api/billing/v1/encounters/{encounter_id}:ready-for-pricing | write |
| 14 | billing.post_encounters_encounter_id_repriceReprice after a correction (identity, referral, diagnosis); dry_run=true previews the amounts before and after without writing | POST /api/billing/v1/encounters/{encounter_id}:reprice | write |
| 15 | billing.get_encounters_encounter_id_chargesCharge lines with item code, quantity and the reversal link (正負帳) | GET /api/billing/v1/encounters/{encounter_id}/charges | read |
| 16 | billing.get_encounters_encounter_id_copaymentThe stored copayment with the 部分負擔代號, its meaning and the rule rows used | GET /api/billing/v1/encounters/{encounter_id}/copayment | read |
| 17 | billing.post_encounters_encounter_id_invoicesFinalize the invoice of a priced encounter (a new version); 409 when not priced | POST /api/billing/v1/encounters/{encounter_id}/invoices | write |
| 18 | billing.post_estimatesA labeled estimate (試算) of self-pay and NHI items with the estimated copayment, valid for billing.estimate.valid_days | POST /api/billing/v1/estimates | write |
| 19 | billing.get_estimates_estimate_idAn estimate again, for printing | GET /api/billing/v1/estimates/{estimate_id} | read |
| 20 | billing.get_fee_importsRecent fee import jobs | GET /api/billing/v1/fee-imports | read |
| 21 | billing.post_fee_importsValidate a hospital self-pay UTF-8 CSV upload | POST /api/billing/v1/fee-imports | write |
| 22 | billing.get_fee_imports_import_idFee import status and validation errors | GET /api/billing/v1/fee-imports/{import_id} | read |
| 23 | billing.post_fee_imports_import_id_applyApprove selected self-pay prices and apply atomically | POST /api/billing/v1/fee-imports/{import_id}:apply | write |
| 24 | billing.get_fee_imports_import_id_diffFrozen price diff for review | GET /api/billing/v1/fee-imports/{import_id}/diff | read |
| 25 | billing.get_fee_imports_import_id_diff_csvExport a reviewed import diff as UTF-8 CSV | GET /api/billing/v1/fee-imports/{import_id}/diff.csv | read |
| 26 | billing.get_inpatient_accountsList Inpatient Accounts | GET /api/billing/v1/inpatient-accounts | read |
| 27 | billing.get_inpatient_accounts_stay_idGet Inpatient Account | GET /api/billing/v1/inpatient-accounts/{stay_id} | read |
| 28 | billing.post_inpatient_accounts_stay_id_accrueAccrue Inpatient Days | POST /api/billing/v1/inpatient-accounts/{stay_id}:accrue | write |
| 29 | billing.post_inpatient_accounts_stay_id_settle_dischargeSettle Discharge | POST /api/billing/v1/inpatient-accounts/{stay_id}:settle-discharge | write |
| 30 | billing.post_inpatient_accounts_stay_id_bed_daysIngest Bed Stay Days | POST /api/billing/v1/inpatient-accounts/{stay_id}/bed-days | write |
| 31 | billing.post_inpatient_accounts_stay_id_interim_settlementsSettle Interim | POST /api/billing/v1/inpatient-accounts/{stay_id}/interim-settlements | write |
| 32 | billing.get_inpatient_accounts_stay_id_settlement_previewPreview Settlement | GET /api/billing/v1/inpatient-accounts/{stay_id}/settlement-preview | read |
| 33 | billing.get_interim_noticesList Interim Notices | GET /api/billing/v1/interim-notices | read |
| 34 | billing.post_interim_notices_runRun Interim Notices Route | POST /api/billing/v1/interim-notices:run | write |
| 35 | billing.get_invoicesList Invoices | GET /api/billing/v1/invoices | read |
| 36 | billing.get_invoices_invoice_idGet Invoice | GET /api/billing/v1/invoices/{invoice_id} | read |
| 37 | billing.post_invoices_invoice_id_cancelCancel an unpaid invoice with a reason by reversing its charges; 409 when paid | POST /api/billing/v1/invoices/{invoice_id}:cancel | write |
| 38 | billing.get_price_runs_run_idOne pricing run with its line counts and the rule rows used | GET /api/billing/v1/price-runs/{run_id} | read |
| # | Tool | API it calls | Access |
|---|---|---|---|
| 39 | payment.get_depositsDeposits by patient and status, with the card deadline and the 就醫序號 once brought | GET /api/payment/v1/deposits | read |
| 40 | payment.post_depositsCreate Deposit | POST /api/payment/v1/deposits | write |
| 41 | payment.post_deposits_deposit_id_applyApply Deposit | POST /api/payment/v1/deposits/{deposit_id}:apply | write |
| 42 | payment.post_deposits_deposit_id_refundRefund Deposit | POST /api/payment/v1/deposits/{deposit_id}:refund | write |
| 43 | payment.post_deposits_deposit_id_receiptIssue the deposit receipt | POST /api/payment/v1/deposits/{deposit_id}/receipt | write |
| 44 | payment.post_kiosk_payables_lookupKiosk: what a patient owes, by national ID with birth date, barcode or card; the same empty answer on any mismatch; refused after repeated failures | POST /api/payment/v1/kiosk/payables:lookup | write |
| 45 | payment.get_payablesWhat is owed: by patient, by 就醫序號 with the visit date, or by the visit barcode | GET /api/payment/v1/payables | read |
| 46 | payment.get_paymentsPayments by patient, shift and day, with payment and receipt numbers | GET /api/payment/v1/payments | read |
| 47 | payment.post_paymentsTake a payment for open invoices; 409 when an invoice is cancelled, paid, unknown or has a payment waiting; needs an Idempotency-Key | POST /api/payment/v1/payments | write |
| 48 | payment.post_payments_payment_id_confirmConfirm Payment | POST /api/payment/v1/payments/{payment_id}:confirm | write |
| 49 | payment.post_payments_payment_id_voidVoid a payment of today's open business day; 409 after the day or shift is closed | POST /api/payment/v1/payments/{payment_id}:void | write |
| 50 | payment.get_receiptsThe receipts of a station and day (reprints only on request) | GET /api/payment/v1/receipts | read |
| 51 | payment.get_receipts_receipt_idA receipt in the NHI field order, with its number, reprint count and reversals | GET /api/payment/v1/receipts/{receipt_id} | read |
| 52 | payment.post_receipts_receipt_id_reprintReprint Receipt | POST /api/payment/v1/receipts/{receipt_id}:reprint | write |
| 53 | payment.get_receipts_receipt_id_pdfRender the frozen receipt snapshot as PDF without issuing a reprint | GET /api/payment/v1/receipts/{receipt_id}.pdf | read |
| 54 | payment.get_receipts_annualAnnual Receipts | GET /api/payment/v1/receipts/annual | read |
| 55 | payment.get_receivablesReceivables by status, overdue state, department and date range | GET /api/payment/v1/receivables | read |
| 56 | payment.post_receivables_receivable_id_send_statementSend a statement for an open receivable; it is kept in the statement log | POST /api/payment/v1/receivables/{receivable_id}:send-statement | write |
| 57 | payment.get_receivables_receivable_id_statementsThe statements sent for a receivable, newest first | GET /api/payment/v1/receivables/{receivable_id}/statements | read |
| 58 | payment.get_refundsRefunds by status, source, patient, approval need and day | GET /api/payment/v1/refunds | read |
| 59 | payment.post_refundsRequest a refund; its channel must be the original payment's channel and the refunds of a payment never add up to more than it; needs an Idempotency-Key | POST /api/payment/v1/refunds | write |
| 60 | payment.post_refunds_refund_id_approveApprove a refund request (the counter then pays it out with :complete); never by the one who asked for it | POST /api/payment/v1/refunds/{refund_id}:approve | write |
| 61 | payment.post_refunds_refund_id_completePay the refund out on the original channel and return the corrected receipt | POST /api/payment/v1/refunds/{refund_id}:complete | write |
| 62 | payment.post_refunds_refund_id_rejectReject a refund request with a note; never by the one who asked for it | POST /api/payment/v1/refunds/{refund_id}:reject | write |
| 63 | payment.get_reports_revenueRevenue by income category, channel and identity category, with the waivers | GET /api/payment/v1/reports/revenue | read |
| 64 | payment.post_stations_station_day_closeClose a station's business day over its shifts; 409 if closed or a shift is open | POST /api/payment/v1/stations/{station}:day-close | write |
17 of 81 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 |