Skip to main content
A conversation is a continuous health thread that can contain multiple provider visits. A finished or canceled request leaves the thread in IDLE, where send_message can resume it.

start_conversation

Starts a conversation with the patient’s health concern and current physical region. Confirm the patient’s current location before calling. Read supported region codes from the live start_conversation tool description. To resume an existing thread, use send_message with its conversation ID.

list_conversations

Lists the account’s conversations, including their id, status, region, activity, and visit counts. The result includes conversations, total, and hasMore. When more results exist, it includes nextCursor and nextPageInstructions.

Example response

get_conversation

Reads current status, region, messages, provider visit details, past visits, and any payment gate. pastVisits[].hasNotes indicates which visits have notes. Reading the conversation with messages also satisfies the read-first requirement for a later send_message.

Visit payment gate

At PAYMENT_REQUIRED, the conversation result includes a paymentGate with a summary and paymentUrl. Relay the summary and offer that Stripe page for the patient’s approval. The page collects any missing visit identity details and asks the patient to approve a temporary hold; there is no card setup. The hold is captured only if a doctor joins and released otherwise. After approval, the conversation moves to MATCHING.

cancel_request

Stops a request in TRIAGING, MATCHING, or PAYMENT_REQUIRED and returns the conversation to IDLE. It does not end the thread. A matching request cancellation releases the visit hold. A request cannot be canceled after a provider joins. The result includes success, conversationId, previousStatus, newStatus, userMessage, and note.

Example response

wait_for_reply

Waits for a triage reply, provider connection, or provider message. It is resumable: if the result has stillWaiting: true, call it again with the same conversation ID. Use afterMessageId to wait beyond a reply already handled. Connector hosts support about 55 seconds per call. Agent runtimes default to 240 seconds and allow up to 600 seconds with maxWaitSeconds; without a progress token or logging capability, the window is capped at 300 seconds. A wait in PAYMENT_REQUIRED returns the gate and payment link; IDLE and EMERGENCY have nothing pending to await. With jobId, the call holds the turn on a care job and returns the job the moment it changes (the patient decided, the care team logged a step or asked a question, the job finished). It returns at once when the job already needs the patient (needs_input) or is finished. See Care Jobs. Results can contain reply or replies, informationNeed, connected, statusChanged, paymentRequired, paymentGate, stillWaiting, and guidance fields. For a prescription event, use prescriptionOrderId with get_prescriptions.

Example response