{"ok":true,"site":{"host":"patiently-webmcp.vercel.app","url":"https://patiently-webmcp.vercel.app/","type":"live","desc":"An outpatient clinic that exposes its queue, charts and prescriptions as 20 WebMCP tools. A doctor runs their floor by talking; a patient does intake in their own language. Every action that touches…","tools":[{"name":"list_demo_surfaces","kind":"answer","impl":"imperative","description":"List the demo surfaces of this clinic that can be opened, and what each one lets an agent do. Call this first to see what is available.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"open_demo","kind":"act","impl":"imperative","description":"Navigate this browser tab to one of the clinic's demo surfaces, so its tools become available. Use 'clinician' for the doctor's dashboard or 'patient' for a patient's waiting-room view.","inputSchema":{"type":"object","properties":{"surface":{"type":"string","enum":["clinician","patient"],"description":"'clinician' = the dashboard, 'patient' = a waiting-room view"},"ticket":{"type":"string","description":"For the patient surface only: which ticket to open, e.g. \"A-001\". Defaults to the first patient waiting."}},"required":["surface"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_patient_queue","kind":"answer","impl":"imperative","description":"List patients currently waiting or in consultation, with queue position, expected wait, and any triage red flags. Use this first to see the clinic floor. Covers all departments unless one is named.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"poli":{"type":"string","enum":["umum","anak","kia","gigi","lansia"],"description":"Clinic department. umum=General, anak=Pediatrics, kia=OB-GYN, gigi=Dental, lansia=Geriatrics."},"only_flagged":{"type":"boolean","description":"Return only patients with an active triage red flag."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"get_previsit_chart","kind":"answer","impl":"imperative","description":"Read the pre-visit chart the intake agents prepared for one patient: chief complaint, history of present illness, what changed since their last visit, suggested questions, and differentials to consider. Read this before seeing the patient.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."}},"required":["ticket"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"get_clinic_floor_stats","kind":"answer","impl":"imperative","description":"Current clinic throughput: how many are waiting, average wait and consultation time, red flags raised today, intakes completed, notes and reminders generated.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"get_vitals","kind":"answer","impl":"imperative","description":"Read the vital signs recorded for a patient this visit, including any values flagged as critical.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."}},"required":["ticket"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"check_drug_interactions","kind":"answer","impl":"imperative","description":"Cross-check every drug in play for this patient — current prescription drafts, home medications, and what was prescribed at the last visit — and report interactions by severity.","annotations":{"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."}},"required":["ticket"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"draft_soap_note","kind":"act","impl":"imperative","description":"Draft a SOAP-format consultation note for a patient from their pre-visit chart and vitals. Produces an UNSIGNED draft in the clinician's note editor for review — it does not enter the record. Requires the pre-visit chart to be written first; it will tell you if it is not ready yet.","inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."}},"required":["ticket"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"draft_prescriptions","kind":"act","impl":"imperative","description":"Draft candidate prescriptions for a patient, each with a rationale, then automatically screen them for drug interactions. Drafts are UNSIGNED — a clinician must approve each one before it becomes a prescription.","inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."}},"required":["ticket"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"record_vitals","kind":"act","impl":"imperative","description":"Record vital signs for a patient, e.g. values the clinician just read aloud. Critical values are flagged automatically. Requires the clinician to confirm on screen before anything is written.","inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."},"systolic_bp":{"type":"number","description":"Systolic BP, mmHg"},"diastolic_bp":{"type":"number","description":"Diastolic BP, mmHg"},"heart_rate":{"type":"number","description":"Heart rate, bpm"},"respiratory_rate":{"type":"number","description":"Respiratory rate, /min"},"temperature_c":{"type":"number","description":"Temperature, °C"},"spo2":{"type":"number","description":"Oxygen saturation, %"},"weight_kg":{"type":"number"},"height_cm":{"type":"number"},"pain_score":{"type":"number","description":"Pain score 0-10"}},"required":["ticket"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"sign_prescription","kind":"act","impl":"imperative","description":"Ask the clinician to sign one of the unsigned prescription drafts. This is a prescribing decision: it always requires an explicit click from the clinician, and the agent cannot complete it alone.","inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."},"drug_name":{"type":"string","description":"Which drafted drug to sign, e.g. \"Amoxicillin\"."}},"required":["ticket","drug_name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"call_next_patient","kind":"act","impl":"imperative","description":"Call a patient in from the waiting room. This physically summons them and shows their number on the clinic display, so it always requires clinician confirmation.","inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number to call. Omit to call whoever is next by priority — red-flagged patients first."},"poli":{"type":"string","enum":["umum","anak","kia","gigi","lansia"],"description":"Clinic department. umum=General, anak=Pediatrics, kia=OB-GYN, gigi=Dental, lansia=Geriatrics."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"complete_consultation","kind":"act","impl":"imperative","description":"Close out the consultation for a patient and release them from the queue. Requires clinician confirmation.","inputSchema":{"type":"object","properties":{"ticket":{"type":"string","description":"Ticket number as shown on the board, e.g. \"A-014\". The patient name also works."}},"required":["ticket"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"issue_queue_ticket","kind":"act","impl":"declarative","description":"Issue a new queue ticket for a registered patient at reception. Fills this form in for the receptionist; a human still presses Issue ticket to commit it, because this gives a real patient a queue number.","inputSchema":{"type":"object","properties":{"patient":{"type":"string","description":"Name or patient ID"},"department":{"type":"string","enum":["umum","anak","kia","gigi","lansia"]},"payer":{"type":"string","enum":["bpjs","umum"]}},"required":["patient","department","payer"]},"__source":"spec","__declarative":true,"page":"/receptionist","pages":["/receptionist"]}],"category":"Health & Education","favicon":"/favicons/patiently-webmcp.vercel.app.svg","apiSurface":"spec","toolCount":14}}