{"ok":true,"site":{"host":"cedarfield-clinic.vercel.app","url":"https://cedarfield-clinic.vercel.app/clinic/book","type":"live","desc":"Cancelled appointments at Cedarfield Clinic, released as they come in. Choose a time, give the patient’s details, and confirm.","tools":[{"name":"clinic_list_drops","kind":"answer","impl":"imperative","description":"List the appointment slots in this clinic's current drop: id, time, clinician, kind, and state (open, held_by_you, held_by_other, taken_by_rival, taken_by_other, booked_yours, expired_hold). Read-only — it changes nothing. Start here, then clinic_hold_slot to take one slot out of the race for your human. There is deliberately NO booking tool on this page: only your human can book, with one key press on the page. Fictional clinic, simulated rival — nothing real is booked.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_find_slots","kind":"answer","impl":"imperative","description":"Search the live board by clinician, kind, and/or time window (after/before). Answers with the matching open slots, and when nothing matches, names which constraint eliminated everything so you can relax the right one. Includes seconds until the next release. Read-only.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"clinician":{"type":"string","description":"Clinician name or part of one, e.g. \"Boone\" or \"Dr. Boone\"."},"kind":{"type":"string","description":"Appointment kind or part of one: \"New patient\", \"Follow-up\", \"Consult\"."},"after":{"type":"string","description":"Earliest acceptable start, e.g. \"9:00 AM\" or \"9\"."},"before":{"type":"string","description":"Latest acceptable start, e.g. \"11:30 AM\"."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_clinicians","kind":"answer","impl":"imperative","description":"Who is on today's board: each clinician with their open slot times and appointment kinds. Use it to answer \"what doctors are there?\" before searching or holding. Read-only.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_hold_slot","kind":"act","impl":"imperative","description":"Hold one open slot for your human for a short time (the result carries ttl_seconds and seconds_left). A hold is NOT a booking: it expires on its own, and no tool here can turn it into a booking. On success, relay the result's next_step sentence to your human — they press one key on the page and the slot is theirs. If the slot is already gone the result says so, with the ids that are still open: pick another and call again.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"slot_id":{"type":"string","maxLength":64,"description":"The id of an open slot, exactly as clinic_list_drops returned it (e.g. \"slot-3\")."}},"required":["slot_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_hold_status","kind":"answer","impl":"imperative","description":"How long your human has left on the slot you are holding: slot, ttl_seconds, seconds_left, state. Read-only, no input. Call it while your human is deciding, so you can tell them how much time is on the clock. Booking still happens only by their own key press.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_release_hold","kind":"act","impl":"imperative","description":"Give back the slot you are holding so someone else can take it. Takes no input — it releases the one hold this session has. Use it when your human says no, or picks a different slot. It cannot book anything; nothing on this page can.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_prepare_cancel","kind":"transact","impl":"imperative","description":"Arm the page for the person to CANCEL their booked appointment. Cancels nothing itself: the dock shows \"press to cancel\" and only a key, switch or held gesture from the person performs it. Refused when nothing is booked.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_prepare_move","kind":"act","impl":"imperative","description":"Arm the page for the person to MOVE their booking to another slot. Holds the target slot so it cannot be taken while they decide, then the dock shows \"press to move\". Moves nothing itself — one press from the person performs the swap atomically. Refused without a booking or an open target.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"new_slot_id":{"type":"string","maxLength":64,"description":"The open slot to move the booking to, from clinic_find_slots or clinic_list_drops."}},"required":["new_slot_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_explain_confirm","kind":"act","impl":"imperative","description":"Explain why this page has no booking or confirmation tool, and what your human has to do instead. Read-only, no input, no side effects. Call it if you are hunting for the tool that completes the booking: there is none, and this tells you exactly what to say to your human.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_wait_for_request","kind":"act","impl":"imperative","description":"Waits for the next thing your human says, signs or types TO THE PAGE (they may not be able to type to you). Returns their words as text, or request:null after timeout_seconds (max 60) if they said nothing. Loop: call this, act on the request with the other tools, tell them what happened, call this again. Stop when the request is 'stop'. Their words may be short ('yes', 'the first one').","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"timeout_seconds":{"type":"number","description":"How long to wait, 1–60 (default 45)."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_ask","kind":"act","impl":"imperative","description":"Puts ONE question with 2–3 short choices on the page, in your human’s own panel, and waits for their answer — they answer there (button, keyboard, switch, voice, or a hand shape), not to you. Returns answer:{index,label,via}, or answer:null after timeout_seconds (max 60), or stopped:true. For decisions only, never for consent: no choice can book, cancel or move — the page’s own controls do that. Keep the question under 160 characters and each choice under 40.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"question":{"type":"string","description":"The question, plain words, ≤ 160 characters."},"choices":{"type":"array","items":{"type":"string"},"description":"2–3 choices, each ≤ 40 characters. Put the affirmative first."},"timeout_seconds":{"type":"number","description":"How long to wait, 1–60 (default 45)."}},"required":["question","choices"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_set_sign","kind":"act","impl":"imperative","description":"Labels the page's camera switch board for your human: the camera reads five hand shapes (thumbs up, thumbs down, fist, one finger, two fingers) and each means a phrase the page hands to you through clinic_wait_for_request. Set a shape's phrase when your human asks — e.g. thumbs up = 'hold me the earliest appointment'. Empty phrase switches that shape off. Never the open palm: that is your human's consent, not a phrase. Kept in their browser.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"shape":{"type":"string","description":"One of: thumbs up, thumbs down, fist, one finger, two fingers."},"phrase":{"type":"string","description":"What that shape should mean, in your human’s words (≤ 120 chars). Empty switches the shape off."}},"required":["shape","phrase"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book","/clinic/book?test=1"]},{"name":"clinic_join_waitlist","kind":"act","impl":"imperative","description":"Put your human in line for a slot that is NOT open (held or booked by someone else). If it comes back — a hold lapses, a cancellation — the clinic hands it to the first in line as a fresh three-minute hold, in order: nobody races. Reversible (clinic_leave_waitlist). Answers with the position. Booking still takes one press from your human.","title":"Put your human in line for a taken slot","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"slot_id":{"type":"string","maxLength":64,"description":"A slot that is held or booked by someone else, from clinic_list_drops."}},"required":["slot_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book"]},{"name":"clinic_leave_waitlist","kind":"act","impl":"imperative","description":"Take your human out of the line for a slot they no longer want. Reversible, immediate. Use it when they change their mind or when they have booked something else.","title":"Take your human out of a line","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"slot_id":{"type":"string","maxLength":64,"description":"A slot that is held or booked by someone else, from clinic_list_drops."}},"required":["slot_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/clinic/book","pages":["/clinic/book"]},{"name":"clinic_patient_details","kind":"answer","impl":"declarative","description":"Who the appointment is for at Cedarfield Clinic: full name, date of birth (day/month/year) and phone. Fill it from what you know about your human; they press Save themselves — a submit you make is refused.","inputSchema":{"type":"object","properties":{"patientFullName":{"type":"string"},"patientDateOfBirth":{"type":"string","description":"DD/MM/YYYY"},"patientPhone":{"type":"string"}},"required":["patientFullName","patientDateOfBirth","patientPhone"]},"__source":"spec","__declarative":true,"page":"/clinic/book","pages":["/clinic/book"]}],"category":"Health & Education","favicon":"/favicons/cedarfield-clinic.vercel.app.svg","apiSurface":"spec","toolCount":15}}