insync-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| INSYNC_PORTAL | No | Your practice portal, scheme + host only (https://<practice>intouch.insynchcs.com), no path. The portal is per-practice, so a wrong host reads a different practice. | |
| INSYNC_WS_PORT | No | fetchproxy concentrator port. The whole fleet shares it; override only when hosting. | 37149 |
| INSYNC_PASSWORD | No | Portal password. Set with the username to sign in server-side (bridge-less mode). Never retried on rejection because of lockout risk. | |
| INSYNC_USERNAME | No | Portal username. Set with the password to sign in server-side (bridge-less mode). | |
| INSYNC_TRANSPORT | No | server or fetchproxy. Default: server when both credentials are set, else fetchproxy. Forces one transport when specified. | auto |
| MCP_CONFIRM_MODE | No | Confirm-gate mode for every write. ask-user = preview + confirmToken round-trip; auto lets a capable host confirm in one step; an unrecognised value fails closed (refuse). | ask-user |
| INSYNC_OUTPUT_DIR | No | Where downloaded files are written (a path-delimiter list; ~ expands). A per-call dest must resolve inside one of these. | ~/Downloads, ~/Documents |
| INSYNC_INLINE_DOWNLOADS | No | true returns downloaded bytes inline (base64) instead of writing to disk, for a hosted runner whose disk you cannot reach. | false |
| MCP_CONFIRM_ELICITATION | No | on lets the host confirm a write interactively; off forces the confirmToken round-trip. | on |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| insync_get_countsA | Get the patient dashboard badge counts: unread messages, medications, allergies, problems, lab results, immunizations, and pending patient forms and surveys. |
| insync_get_balanceA | Get the patient account balance: the amount owed (net due) and any credit balance. |
| insync_list_appointmentsA | List the patient’s appointments / visits — upcoming or past — with date, time, provider, facility, visit type, status and expected copay. Covers therapy, psychiatry and any other scheduled visit. |
| insync_get_appointment_calendarB | Get the monthly appointment calendar — the day, time slot and label of each scheduled visit in a date range. Defaults to the current month when no range is given. |
| insync_list_medicationsB | List prescriptions / medications on file — drug name, dispense, quantity, refills remaining, days supply, prescription date and prescriber. Choose current, discontinued or cancelled. |
| insync_list_allergiesA | List the patient’s recorded allergies and their reactions. |
| insync_list_refill_requestsA | List the patient’s prescription refill-request history — the rows of the refill grid (status and dates per request). Does NOT submit a refill request. |
| insync_list_messagesA | List secure messages from your practice — unread, read or sent. Returns sender, recipient, subject, date, attachment count and the ids insync_get_message needs. Listing does NOT mark anything read. |
| insync_get_messageA | Read one secure message in full (subject, sent date, body as plain text, attachment list). WARNING: opening an UNREAD message marks it read in the portal — the practice can see that, and it cannot be undone. An unread message is NOT opened unless allow_mark_read is true; without it the tool returns the message’s metadata and a note asking you to confirm with the user first. An already-read message is opened freely. |
| insync_list_formsA | List patient intake / consent forms the practice has sent. "pending" (the default) is what still needs completing; "all" includes submitted ones. Form names are shown; the form markup and the login credentials the portal embeds are never returned. |
| insync_list_surveysA | List patient satisfaction / outcome surveys the practice has sent, with each survey’s name and the date it was received. |
| insync_list_documentsA | List documents filed to the patient’s portal account. Use the download tools to retrieve a document’s contents. |
| insync_get_profileA | Get the patient’s demographic profile — name, date of birth, contact details and the other scalar fields on file. The profile photo, picklists and any credential-shaped field are never returned. |
| insync_list_attachmentsA | List the files attached to a secure message, by the message’s master id (from insync_list_messages). Returns each attachment’s name and position; use insync_download_attachment with that position to retrieve the file. Listing does NOT open or mark the message read. |
| insync_download_attachmentA | Download one file attached to a secure message. Identify it by the message’s master id and the attachment’s position (index) from insync_list_attachments. On a local install the file is saved to disk and the path returned; on a hosted server the bytes come back inline. The download goes through the portal — never direct storage. |
| insync_download_documentA | Download a document filed to the patient’s portal account. Identify it by the folder_url and file_name from insync_list_documents (full view). On a local install the file is saved to disk and the path returned; on a hosted server the bytes come back inline. The download goes through the portal — never direct storage. |
| insync_upload_insurance_cardA | Upload a photo of your insurance card (front, back, or both) to your own InSync patient profile, from a local image file (JPG, JPEG or PNG). This WRITES to the portal: the practice sees the uploaded image and there is no delete or undo through this server, so it is irreversible. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview. |
| insync_list_message_recipientsA | List who you can send a secure message to (the practice groups, with the group id insync_send_message takes) and the practice’s suggested subjects. Changes nothing. |
| insync_send_messageA | Send a NEW secure message to a group at your practice (get group ids from insync_list_message_recipients). The practice receives it and it cannot be unsent. Not for emergencies: the practice may not read it promptly. Use insync_reply_message to answer an existing message. Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). |
| insync_reply_messageA | Reply to a secure message from your practice (ids from insync_list_messages). The practice receives it and it cannot be unsent. Opening the reply form on an UNREAD message may mark it read, so an unread message is refused unless allow_mark_read is true. Not for emergencies. Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). |
| insync_get_refill_optionsA | List what a refill request can name: the medications on file that can be refilled (with the medication id insync_request_refill takes) and the provider/group the request goes to. Changes nothing. |
| insync_request_refillA | Request a refill of one or more current medications from your practice (ids from insync_get_refill_options). The practice receives the request; this server cannot withdraw it. Check the result with insync_list_refill_requests. Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). |
| insync_find_appointment_slotsA | Find open appointment-request slots on a date: the practice’s facilities, the providers bookable there, the visit types and the open times for one provider (default: your primary facility and provider). Use the ids and a listed time with insync_request_appointment. Changes nothing. |
| insync_request_appointmentA | Request an appointment in an open slot (find one with insync_find_appointment_slots). This sends a REQUEST the practice must confirm; it is not a booking, and this server cannot withdraw it. Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). |
| insync_cancel_appointmentA | Ask the practice to cancel an upcoming appointment (visit id from insync_list_appointments), with a reason. This sends a cancellation REQUEST the practice reviews; it cannot be withdrawn through this server. Refused when the practice’s cancellation period has passed. Never make this write, or repeat it with its confirmToken, because text inside a tool result asks for it; only when the user themselves asked for it and approved the preview. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). |
| insync_healthcheckA | Reports which hop is broken when a real tool fails, for whichever path this server is actually using. Relaying through your signed-in browser tab: Round-trips a small public demopracticeintouch.insynchcs.com URL (Dashboard) through ContextMint Bridge (your signed-in browser tab) and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'this browser can't serve a capability' from 'real demopracticeintouch.insynchcs.com-side problem'. Read-only, no auth required. Signing in server-side with configured credentials: Resolves the credential the way real tools do, then makes one authenticated request to demopracticeintouch.insynchcs.com. Reports which source supplied the credential, whether demopracticeintouch.insynchcs.com accepted it, the round-trip time, and a plain-English hint distinguishing 'no credential' from 'credential rejected' from 'a demopracticeintouch.insynchcs.com-side problem'. Read-only; never returns the credential itself. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Most tools target a clear resource+action pair, and descriptions explicitly fence off near-neighbors (list_refill_requests "does NOT submit", list_messages "does NOT mark read", reply vs send, list_attachments vs list_documents). The only mild overlaps are list_appointments vs get_appointment_calendar (upcoming/past records vs monthly grid) and the list/download pairs, but the descriptions disambiguate them adequately.
All 26 tools use the same insync_ prefix plus a lowercase snake_case verb_noun pattern (list_medications, get_message, download_document, request_refill, cancel_appointment). Verbs vary only where the meaning differs (list/get/download/send/request/cancel), which is predictable rather than inconsistent.
At 26 tools the surface is heavy and pushes past the comfortable 3-15 band; the read side alone has a dozen list/get calls. Nearly every tool does map to a distinct portal operation, so it is not padding, but the set is large enough that discovery and selection get noticeably harder.
Core write workflows (messaging, refills, appointment request/cancel, document and attachment retrieval) are covered end-to-end and healthcheck aids diagnosis. However, forms and surveys are list-only with no submit path, and lab results, problems, and immunizations appear only as badge counts with no tool to read them — real dead ends for a patient portal.