Book a Ukrainian-speaking vertebrologist in Chernivtsi, Ukraine: find slots and book for the user.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh 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.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| date* | string | |
| time* | string |
{
"type": "object",
"required": [
"date",
"time"
],
"properties": {
"date": {
"type": "string"
},
"time": {
"type": "string"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string |
{
"type": "object",
"required": [
"booking_id"
],
"properties": {
"booking_id": {
"type": "string"
}
}
}Free appointment slots for the vertebrologist (Chernivtsi). Optional date (YYYY-MM-DD): without it — all nearest available days. Read-only (does not book).
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD (optional) |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD (optional)"
}
}
}About the vertebrologist: specialty, what he treats, address, slot length, rules (one appointment per day), and how to book.
No arguments.
{
"type": "object",
"properties": {}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer |
{
"type": "object",
"properties": {
"limit": {
"type": "integer"
},
"offset": {
"type": "integer"
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| to* | string | |
| date* | string | |
| from* | string |
{
"type": "object",
"required": [
"date",
"from",
"to"
],
"properties": {
"to": {
"type": "string"
},
"date": {
"type": "string"
},
"from": {
"type": "string"
}
}
}