← WebMCP Directory

Tool tree

cedarfield-clinic.vercel.app

Health & EducationTools verified
Website
Cancelled appointments at Cedarfield Clinic, released as they come in. Choose a time, give the patient’s details, and confirm.
Explore capabilities

    page: Every page

    clinic_list_dropsAnswer

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/clinic/book"
    }
    clinic_find_slotsAnswer

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/clinic/book"
    }
    clinic_cliniciansAnswer

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/clinic/book"
    }
    clinic_hold_slotAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/clinic/book"
    }
    clinic_hold_statusAnswer

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/clinic/book"
    }
    clinic_release_holdAction

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/clinic/book"
    }
    clinic_prepare_cancelSensitive Action

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/clinic/book"
    }
    clinic_prepare_moveAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/clinic/book"
    }
    clinic_explain_confirmAction

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/clinic/book"
    }
    clinic_wait_for_requestAction

    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').

    View tool JSON
    {
      "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').",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeout_seconds": {
            "type": "number",
            "description": "How long to wait, 1–60 (default 45)."
          }
        },
        "additionalProperties": false
      },
      "page": "/clinic/book"
    }
    clinic_askAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/clinic/book"
    }
    clinic_set_signAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/clinic/book"
    }

    page: Book

    clinic_join_waitlistAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/clinic/book"
    }
    clinic_leave_waitlistAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/clinic/book"
    }
    clinic_patient_detailsAnswer

    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.

    View tool JSON
    {
      "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"
        ]
      },
      "page": "/clinic/book"
    }