Skip to content

Rudko — vertebrologist (Chernivtsi, Ukraine)

by rudko.site · remote · no sign-in to list tools · v0.1.2 · published by site.rudko

Book a Ukrainian-speaking vertebrologist in Chernivtsi, Ukraine: find slots and book for the user.

Deletes · 1Final · 1Changes · 1

7 tools: 1 can delete or cancel things, 1 do something that can't be undone, 1 change things and 4 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http vertebrolog https://rudko.site/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • Warncancel

    The server marks "cancel" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "cancel" says "cancel": a word for removing or ending something.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

7 tools

Deletes or cancels 1Claude Code: deny
  • cancelREAL action: cancels the user's appointment by booking_id (from list_current_bookings) IMMEDIATELY — no confirmation step.1 finding

    Why it is in this group

    • The name "cancel" says "cancel": a word for removing or ending something.
    • The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "cancel" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "cancel" says "cancel": a word for removing or ending something.

      What this check looks for
    Description, as the server wrote it
    REAL action: cancels the user's appointment by booking_id (from list_current_bookings) IMMEDIATELY — no confirmation step. If the user said cancel, cancel; do NOT re-ask (repeated confirmations frustrate users — act decisively). On success returns cancelled=true with the booking_id; on failure returns ok=false with a reason (not_found / bad_id). Consent is a one-time Telegram OAuth (scope booking:write), already done — never re-prompt per action. To change the time instead, prefer reschedule.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
    • readOnlyHint: false
    • title: Cancel appointment
Can't be undone 1Claude Code: ask
  • rescheduleREAL action: moves the user's appointment to another free slot the SAME day, ATOMICALLY — if the target slot was just taken, the user KEEPS their current slot (never loses the held…No findings

    Why it is in this group

    • The name "reschedule" says "reschedule": a word for a change.
    • The input addresses people (input.to): what it sends cannot be taken back.
    Description, as the server wrote it
    REAL action: moves the user's appointment to another free slot the SAME day, ATOMICALLY — if the target slot was just taken, the user KEEPS their current slot (never loses the held slot; that atomic guarantee is the whole point of same-day move). For a DIFFERENT day, just call book instead (a fresh booking; cross-day needs no atomic hold). No confirmation — act on request. Consent is a one-time Telegram OAuth (scope booking:write), already done — never re-prompt per action. date (YYYY-MM-DD), from (HH:MM current), to (HH:MM new).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
    • title: Reschedule appointment
Changes things 1Claude Code: ask
  • bookREAL action (not a simulation): creates a real appointment with the vertebrologist on the user's behalf.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    REAL action (not a simulation): creates a real appointment with the vertebrologist on the user's behalf. Requires the user's CONSENT — authorization via Telegram (OAuth, scope booking:write). date (YYYY-MM-DD), time (HH:MM). One appointment per day.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
    • title: Book appointment
Only reads 4Claude Code: allow
  • get_availabilityFree appointment slots for the vertebrologist (Chernivtsi).No findings

    Why it is in this group

    • The name "get_availability" says "get": a word for reading.
    Description, as the server wrote it
    Free appointment slots for the vertebrologist (Chernivtsi). Optional date (YYYY-MM-DD): without it — all nearest available days. Read-only (does not book).

    Annotations the server declares

    • openWorldHint: true
    • readOnlyHint: true
    • title: Free slots
  • get_doctor_infoAbout the vertebrologist: specialty, what he treats, address, slot length, rules (one appointment per day), and how to book.No findings

    Why it is in this group

    • The name "get_doctor_info" says "get": a word for reading.
    Description, as the server wrote it
    About the vertebrologist: specialty, what he treats, address, slot length, rules (one appointment per day), and how to book.

    Annotations the server declares

    • openWorldHint: false
    • readOnlyHint: true
    • title: About the doctor
  • list_current_bookingsThe user's current/upcoming appointments (booking_id, date, time, status), nearest first.No findings

    Why it is in this group

    • The name "list_current_bookings" says "list": a word for reading.
    Description, as the server wrote it
    The user's current/upcoming appointments (booking_id, date, time, status), nearest first. Cancelled ones are ALSO shown — tell them apart by the status field ('booked' | 'cancelled'). Needed to reschedule/cancel. Requires authorization.

    Annotations the server declares

    • openWorldHint: true
    • readOnlyHint: true
    • title: Current appointments
  • list_past_bookingsThe user's past appointments (booking_id, date, time, status), most recent first.No findings

    Why it is in this group

    • The name "list_past_bookings" says "list": a word for reading.
    Description, as the server wrote it
    The user's past appointments (booking_id, date, time, status), most recent first. limit (default 20) and offset for pagination. Cancelled ones are ALSO shown — by the status field. Requires authorization.

    Annotations the server declares

    • openWorldHint: true
    • readOnlyHint: true
    • title: Past appointments

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.2. Values in angle brackets are yours to fill in.

claude mcp add --transport http vertebrolog https://rudko.site/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__vertebrolog__get_availability",
      "mcp__vertebrolog__get_doctor_info",
      "mcp__vertebrolog__list_current_bookings",
      "mcp__vertebrolog__list_past_bookings"
    ],
    "ask": [
      "mcp__vertebrolog__book",
      "mcp__vertebrolog__reschedule"
    ],
    "deny": [
      "mcp__vertebrolog__cancel"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as vertebrolog. Review it before you use it.