{"tools":[{"name":"search_patient_by_rx","description":"Search for a patient by their prescription (RX) number. Returns patient information including name, phone, and language preference.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: \"1\" (Main St), \"2\" (Kissena), \"3\" (39th Ave), \"6\" (Roosevelt)"},"rxNumber":{"type":"string","description":"Prescription number to search for"}},"required":["storeNo","rxNumber"]}},{"name":"search_patient_by_phone","description":"Search for a patient by their phone number. Returns matching patients from the pharmacy database.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: \"1\" (Main St), \"2\" (Kissena), \"3\" (39th Ave), \"6\" (Roosevelt)"},"phone":{"type":"string","description":"Patient phone number (10 digits, e.g., \"7181234567\")"},"dob":{"type":"string","description":"Optional: Date of birth in YYYY-MM-DD format for verification"}},"required":["storeNo","phone"]}},{"name":"checkin_patient","description":"Check in a patient to the pharmacy will-call queue. The patient will be notified when their prescription is ready.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"patientNo":{"type":"string","description":"Patient number (from search_patient result)"},"reason":{"type":"string","description":"Reason for visit: \"pickup\", \"refill\", \"consultation\", or \"other\"","enum":["pickup","refill","consultation","other"]},"notes":{"type":"string","description":"Optional notes for the pharmacist"}},"required":["storeNo","patientNo"]}},{"name":"checkout_patient","description":"Complete a patient checkout after they have picked up their prescription. Removes them from the queue.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"patientNo":{"type":"string","description":"Patient number"},"queueId":{"type":"string","description":"Queue entry ID (optional, will find by patient if not provided)"}},"required":["storeNo","patientNo"]}},{"name":"get_patient_rx_status","description":"Get the status of a patient's prescriptions. Shows which prescriptions are ready, in progress, or need attention.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"patientNo":{"type":"string","description":"Patient number"}},"required":["storeNo","patientNo"]}},{"name":"get_queue","description":"Get the current will-call queue for a pharmacy store. Shows all patients waiting for pickup with their status and wait times.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"status":{"type":"string","description":"Filter by status: \"waiting\", \"called\", \"all\". Default is \"all\"","enum":["waiting","called","all"]},"limit":{"type":"number","description":"Maximum number of entries to return. Default is 50"}},"required":["storeNo"]}},{"name":"add_to_queue","description":"Manually add a patient to the will-call queue. Use this when a patient arrives but hasn't checked in through the normal process.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"patientNo":{"type":"string","description":"Patient number"},"patientName":{"type":"string","description":"Patient name for display"},"phoneNumber":{"type":"string","description":"Patient phone number"},"reason":{"type":"string","description":"Reason for visit","enum":["pickup","refill","consultation","other"]},"notes":{"type":"string","description":"Optional notes"},"priority":{"type":"string","description":"Priority level: \"normal\" or \"urgent\"","enum":["normal","urgent"]}},"required":["storeNo","patientNo","patientName"]}},{"name":"update_queue_status","description":"Update the status of a queue entry. Use to mark a patient as \"called\" when staff is ready to assist them.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"queueId":{"type":"string","description":"Queue entry ID"},"status":{"type":"string","description":"New status: \"waiting\", \"called\", \"completed\", \"cancelled\"","enum":["waiting","called","completed","cancelled"]},"notes":{"type":"string","description":"Optional status update notes"}},"required":["storeNo","queueId","status"]}},{"name":"remove_from_queue","description":"Remove a patient from the will-call queue. Use when a patient leaves without pickup or for cancellations.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"queueId":{"type":"string","description":"Queue entry ID"},"reason":{"type":"string","description":"Reason for removal: \"completed\", \"cancelled\", \"left\", \"other\"","enum":["completed","cancelled","left","other"]}},"required":["storeNo","queueId"]}},{"name":"get_queue_stats","description":"Get queue statistics for a store including average wait times, busiest hours, and completion rates.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"period":{"type":"string","description":"Time period: \"today\", \"week\", \"month\"","enum":["today","week","month"]}},"required":["storeNo"]}},{"name":"send_sms","description":"Send an SMS text message to a patient. Use for notifications, reminders, or direct communication.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number (determines which phone number sends the message)"},"phoneNumber":{"type":"string","description":"Recipient phone number (10 digits, e.g., \"7181234567\")"},"message":{"type":"string","description":"Message text to send (max 160 characters recommended)"},"patientNo":{"type":"string","description":"Optional patient number for logging and personalization"}},"required":["storeNo","phoneNumber","message"]}},{"name":"send_survey","description":"Send a satisfaction survey to a patient via SMS. Automatically selects language based on patient preference.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"patientNo":{"type":"string","description":"Patient number"},"interactionType":{"type":"string","description":"Type of interaction: \"pickup\" or \"delivery\"","enum":["pickup","delivery"]},"phoneNumber":{"type":"string","description":"Optional override phone number (uses patient record if not provided)"}},"required":["storeNo","patientNo","interactionType"]}},{"name":"get_message_history","description":"Get SMS message history for a phone number. Shows both sent and received messages.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"phoneNumber":{"type":"string","description":"Phone number to get history for"},"limit":{"type":"number","description":"Maximum messages to return. Default is 20"},"direction":{"type":"string","description":"Filter by direction: \"sent\", \"received\", or \"all\"","enum":["sent","received","all"]}},"required":["storeNo","phoneNumber"]}},{"name":"list_pending_notifications","description":"List notifications pending in the queue awaiting manual review before sending.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"notificationType":{"type":"string","description":"Filter by type: \"delivery\", \"pickup\", \"reminder\", or \"all\"","enum":["delivery","pickup","reminder","all"]},"limit":{"type":"number","description":"Maximum notifications to return. Default is 50"}},"required":["storeNo"]}},{"name":"send_queued_notification","description":"Send a notification that is pending in the queue. This approves and sends the notification to the recipient.","inputSchema":{"type":"object","properties":{"notificationId":{"type":"string","description":"ID of the notification to send"},"storeNo":{"type":"string","description":"Store number for verification"}},"required":["notificationId","storeNo"]}},{"name":"skip_notification","description":"Skip a notification in the queue without sending it. Use when a notification is no longer needed.","inputSchema":{"type":"object","properties":{"notificationId":{"type":"string","description":"ID of the notification to skip"},"storeNo":{"type":"string","description":"Store number for verification"},"reason":{"type":"string","description":"Reason for skipping the notification"}},"required":["notificationId","storeNo"]}},{"name":"send_kiosk_command","description":"Send a command to a pharmacy kiosk device. Can display messages, request signatures, or reset the display.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"kioskId":{"type":"string","description":"Kiosk device ID"},"command":{"type":"string","description":"Command type: \"show_patient\", \"request_signature\", \"show_success\", \"show_error\", \"reset\"","enum":["show_patient","request_signature","show_success","show_error","reset"]},"data":{"type":"object","description":"Command-specific data (e.g., patient info, message text)","properties":{"patientName":{"type":"string"},"message":{"type":"string"},"sessionId":{"type":"string"}}}},"required":["storeNo","kioskId","command"]}},{"name":"get_kiosk_status","description":"Get the current status of a kiosk device or all kiosks at a store.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"kioskId":{"type":"string","description":"Optional specific kiosk ID. Returns all kiosks if not provided."}},"required":["storeNo"]}},{"name":"get_kiosk_signature","description":"Check if a signature has been captured on the kiosk for a specific session.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"sessionId":{"type":"string","description":"Signature session ID (from request_signature command)"}},"required":["storeNo","sessionId"]}},{"name":"list_kiosks","description":"List all registered kiosk devices at a store with their configuration.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"}},"required":["storeNo"]}},{"name":"create_appointment","description":"Schedule a new appointment for a patient. Appointments are stored in local time for the store.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"patientNo":{"type":"string","description":"Patient number"},"date":{"type":"string","description":"Appointment date in YYYY-MM-DD format (local time)"},"startTime":{"type":"string","description":"Start time in HH:MM format (24-hour, local time)"},"endTime":{"type":"string","description":"End time in HH:MM format (24-hour, local time). Optional, defaults to startTime + 30 min"},"type":{"type":"string","description":"Appointment type: \"consultation\", \"pickup\", \"vaccination\", \"screening\"","enum":["consultation","pickup","vaccination","screening"]},"notes":{"type":"string","description":"Optional appointment notes"}},"required":["storeNo","patientNo","date","startTime","type"]}},{"name":"confirm_appointment","description":"Confirm a pending appointment. Sends confirmation to the patient.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"appointmentId":{"type":"string","description":"Appointment ID to confirm"},"sendNotification":{"type":"boolean","description":"Whether to send confirmation SMS to patient. Default is true."}},"required":["storeNo","appointmentId"]}},{"name":"cancel_appointment","description":"Cancel an existing appointment. Optionally sends cancellation notice to patient.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"appointmentId":{"type":"string","description":"Appointment ID to cancel"},"reason":{"type":"string","description":"Reason for cancellation"},"sendNotification":{"type":"boolean","description":"Whether to send cancellation SMS to patient. Default is true."}},"required":["storeNo","appointmentId"]}},{"name":"get_available_slots","description":"Get available appointment slots for a specific date. Shows open times for scheduling.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"date":{"type":"string","description":"Date to check in YYYY-MM-DD format"},"type":{"type":"string","description":"Appointment type to filter slots","enum":["consultation","pickup","vaccination","screening","all"]}},"required":["storeNo","date"]}},{"name":"get_patient_appointments","description":"Get all appointments for a specific patient.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"patientNo":{"type":"string","description":"Patient number"},"status":{"type":"string","description":"Filter by status: \"pending\", \"confirmed\", \"completed\", \"cancelled\", \"all\"","enum":["pending","confirmed","completed","cancelled","all"]},"upcoming":{"type":"boolean","description":"Only show upcoming appointments (future dates). Default is true."}},"required":["storeNo","patientNo"]}},{"name":"reschedule_appointment","description":"Reschedule an existing appointment to a new date and time.","inputSchema":{"type":"object","properties":{"storeNo":{"type":"string","description":"Store number: 1=Main, 2=Kissena, 3=39th, 6=Roosevelt"},"appointmentId":{"type":"string","description":"Appointment ID to reschedule"},"newDate":{"type":"string","description":"New appointment date in YYYY-MM-DD format"},"newStartTime":{"type":"string","description":"New start time in HH:MM format (24-hour)"},"newEndTime":{"type":"string","description":"New end time in HH:MM format (optional)"},"sendNotification":{"type":"boolean","description":"Whether to send notification to patient. Default is true."}},"required":["storeNo","appointmentId","newDate","newStartTime"]}}]}