Αναφορά MCP / Ραντεβού
Εργαλεία ραντεβού
Έξι εργαλεία για κρατήσεις, δεσμεύσεις έδρας και υπολογισμένη διαθεσιμότητα. Οι επικαλυπτόμενες κρατήσεις στην ίδια έδρα απορρίπτονται.
Πώς διαβάζεται
Κάθε εργαλείο παρακάτω παραθέτει τις παραμέτρους του ακριβώς όπως τις δηλώνει το σχήμα εισόδου: τον τύπο, αν είναι υποχρεωτική, τις επιτρεπτές τιμές όπου τις ορίζει το σχήμα, και τι σημαίνει η κάθε παράμετρος σύμφωνα με το σχήμα. Τίποτα από αυτά δεν γράφεται εδώ: ένα ποσό σε λεπτά, μια προεπιλογή που ισχύει αν παραλείψετε ένα πεδίο, ποια ενέργεια χρειάζεται ποιο id, όλα έρχονται από το ίδιο το εργαλείο.
Το practiceId δεν είναι ποτέ παράμετρος. Προέρχεται από το token σας, και οι διαδρομές εγγραφής το αφαιρούν αν το στείλει ο client.
Ένα εργαλείο που γράφει δείχνει ένα παράδειγμα για κάθε ενέργεια, γιατί αυτό που χρειάζεται μια ενέργεια δεν είναι ό,τι ορίζει υποχρεωτικό το σχήμα εισόδου: το σχήμα ζητά το action και τα υπόλοιπα τα αφήνει στην ενέργεια. Κάθε παράδειγμα είναι πλήρες αίτημα tools/call, και οι παράμετροί του ελέγχονται, όταν φτιάχνεται αυτή η σελίδα, με το ίδιο αντικείμενο που διαβάζει ο server. Τα σφάλματα επιστρέφονται μέσα σε απόκριση 200 με isError: δείτε την επισκόπηση MCP και τον πλήρη κατάλογο.
Ραντεβού
Κρατήσεις, δεσμεύσεις έδρας και υπολογισμένη διαθεσιμότητα.
get_day_agenda
Το πρόγραμμα μιας ημέρας ή έως 7 ημερών, με ονόματα: τα ενεργά ραντεβού με ασθενή, υπηρεσία, έδρα και θεραπευτή, τα κλειστά διαστήματα χωριστά, μετρήσεις, και αν το ιατρείο είναι κλειστό.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| date | string | Προαιρετικό | YYYY-MM-DD on the practice's clock. Defaults to today. |
| to | string | Προαιρετικό | Last day, for a range of up to 7 days. |
| practitioner | string | Προαιρετικό | A name, as the practice said it. |
| chair | string | Προαιρετικό | A name, as the practice said it. |
| patient | string | Προαιρετικό | A name, as the practice said it. |
| service | string | Προαιρετικό | A name, as the practice said it. |
| time | string | Προαιρετικό | HH:mm on the practice's clock, only when one was named: the bookings that start then. |
| locationId | string | Προαιρετικό | Only this location: an id from list_locations, only when the practice named a location. |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_day_agenda",
"arguments": {}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
find_booking_slots
Πότε χωράει ένα ραντεβού, με ονόματα: απάντηση για την ώρα που ζητήθηκε, ελεύθερες ώρες σε όλη τη μέρα με τις έδρες τους και έτοιμο σχέδιο κράτησης, και τα ραντεβού του ασθενή εκείνη τη μέρα. Ένα όνομα που ταιριάζει σε πολλούς επιστρέφει τους υποψηφίους, ποτέ μια εικασία.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| date | string | Υποχρεωτικό | YYYY-MM-DD on the practice's clock. |
| time | string | Προαιρετικό | HH:mm on the practice's clock, only when one was named. |
| partOfDay | string: morning | afternoon | evening | Προαιρετικό | Only when named. Morning ends 12:00, evening starts 17:00. |
| days | integer | Προαιρετικό | Days from date to look at. Defaults to 1. |
| patient | string | Προαιρετικό | A name, as the practice said it. |
| service | string | Προαιρετικό | A name, as the practice said it. Its own length is used. |
| practitioner | string | Προαιρετικό | A name, as the practice said it. |
| chair | string | Προαιρετικό | A name, as the practice said it. |
| locationId | string | Προαιρετικό | Only this location: an id from list_locations, only when the practice named a location. |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "find_booking_slots",
"arguments": {
"date": "2026-11-02"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
list_appointments
Λίστα ραντεβού σε χρονικό παράθυρο. Δώστε chairId για περιορισμό σε μία έδρα.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| from | string | Υποχρεωτικό | Start of the window. ISO-8601 datetime with an explicit offset or Z, e.g. "2026-07-08T09:00:00Z" or "2026-07-08T12:00:00+03:00". A datetime without one is rejected — do not send "2026-07-08T09:00:00". A time a person says is on the practice's clock (get_practice → settings.timezone): send it with that zone's offset for that date, not as Z. |
| to | string | Υποχρεωτικό | End of the window. ISO-8601 datetime with an explicit offset or Z, e.g. "2026-07-08T09:00:00Z" or "2026-07-08T12:00:00+03:00". A datetime without one is rejected — do not send "2026-07-08T09:00:00". A time a person says is on the practice's clock (get_practice → settings.timezone): send it with that zone's offset for that date, not as Z. |
| chairId | string | Προαιρετικό | Restrict to one chair. Use list_chairs for ids. |
| practitionerId | string | Προαιρετικό | Restrict to one practitioner's appointments. Use list_practice_members for ids. |
| patientId | string | Προαιρετικό | Restrict to one patient's appointments. This is how a question about one person's bookings is answered — searching their name by text also matches names that contain it. |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_appointments",
"arguments": {
"from": "2026-11-09T09:00:00.000Z",
"to": "2026-11-09T09:00:00.000Z"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
get_appointment
Ανάγνωση ενός ραντεβού με βάση το id.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| appointmentId | string | Υποχρεωτικό |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_appointment",
"arguments": {
"appointmentId": "d4398f97-d439-4c3a-9e21-7b84c5d10f33"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
get_appointment_availability
Ελεύθερες ώρες μίας ημέρας σε όλες τις έδρες, ή σε μία έδρα ή για ένα άτομο, με βάση το ωράριο, τη ζώνη ώρας και τις υπάρχουσες κρατήσεις. Οι ώρες που πέρασαν δεν εμφανίζονται, και για μία ζητούμενη ώρα η απάντηση λέει αν είναι ελεύθερη.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| date | string | Υποχρεωτικό | The calendar day to check, YYYY-MM-DD. |
| time | string | Προαιρετικό | A time the practice asked about, HH:mm on its clock. Send it only when the practice named a time. |
| partOfDay | string: morning | afternoon | evening | Προαιρετικό | Only times starting in this part of the day, by the server's bounds: morning before 12:00, afternoon 12:00 to 17:00, evening from 17:00. Send it only when the practice named one. |
| chairId | string | Προαιρετικό | Only this chair. Send it only when the practice named a chair. |
| practitionerId | string | Προαιρετικό | Only times this person is free (a practice-member id, from list_practice_members), on any chair that is free too. Send it only when the practice named the person. |
| serviceId | string | Προαιρετικό | The service being booked; its own length is used. Send this whenever the caller named a treatment. |
| durationMinutes | integer | Προαιρετικό | Length of the booking when no service says it: moving a booking keeps the length it already has. Overrides serviceId. Defaults to 30 when neither is given. |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_appointment_availability",
"arguments": {
"date": "2026-11-02"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
write_appointment
Δημιουργία, ενημέρωση ή ακύρωση ραντεβού. action=create απαιτεί chairId, startAt και endAt· update και cancel απαιτούν appointmentId. Το type είναι appointment, reminder ή unavailable· ο κλειστός χρόνος χωρίς έδρα και χωρίς επαγγελματία μπορεί να ορίσει locationId, ώστε να κλείνει μόνο εκείνη την τοποθεσία. Οι επικαλύψεις στην ίδια έδρα απορρίπτονται.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| action | string: create | update | confirm | decline | cancel | Υποχρεωτικό | |
| appointmentId | string | Προαιρετικό | The appointment to update, confirm, decline or cancel. |
| expectedDate | string | Προαιρετικό | Required for action=update, decline and cancel. The calendar day (YYYY-MM-DD, the practice's clock) of the booking named in appointmentId, as you just described it to the user — "her Thursday appointment" means the date of that Thursday. It is checked against the booking: if they disagree, nothing happens and the answer says which day the booking is really on. Send the day you told the user, not the day you infer from the id. |
| type | string: appointment | reminder | unavailable | Προαιρετικό | Required for action=create. appointment = a patient booking; reminder = a note on the calendar; unavailable = blocked-out time. |
| date | string | Προαιρετικό | The day of the booking, YYYY-MM-DD, on the practice's clock. Send this with startTime and endTime and you do not have to work out any offset — the server does it. This is the easy way and the one to use for a time somebody said out loud. |
| startTime | string | Προαιρετικό | When it starts, HH:MM on the practice's clock — 10:00 means ten in the morning there. Needs date. This WINS over startAt if both are sent, because it is the time the practice was shown. |
| endTime | string | Προαιρετικό | When it ends, HH:MM on the practice's clock. Needs date. This wins over endAt if both are sent. |
| startAt | string | Προαιρετικό | When it starts, as an exact instant. Use this ONLY for a value a tool handed you — the startAt of a free slot — and then send NOTHING else about the time. For a time somebody said, send date and startTime and no startAt: converting it yourself is how a 10:00 booking got stored at 07:00. ISO-8601 datetime with an explicit offset or Z, e.g. "2026-07-08T09:00:00Z" or "2026-07-08T12:00:00+03:00". A datetime without one is rejected — do not send "2026-07-08T09:00:00". A time a person says is on the practice's clock (get_practice → settings.timezone): send it with that zone's offset for that date, not as Z. |
| endAt | string | Προαιρετικό | When it ends, as an exact instant. For a time somebody said, send date and endTime instead. ISO-8601 datetime with an explicit offset or Z, e.g. "2026-07-08T09:00:00Z" or "2026-07-08T12:00:00+03:00". A datetime without one is rejected — do not send "2026-07-08T09:00:00". A time a person says is on the practice's clock (get_practice → settings.timezone): send it with that zone's offset for that date, not as Z. |
| chairId | string | Προαιρετικό | The chair being booked. Use list_chairs for ids. Required on a booking when the practice has more than one chair. |
| patientId | string | Προαιρετικό | The patient being seen, if there is one. |
| practitionerId | string | Προαιρετικό | The practitioner the appointment is with — a practice-member id, from list_practice_members. Optional: unassigned booking requests have none. For type=unavailable it is the person who is away (a seminar, leave): send it only when the practice named that person, and that person's free times then leave the block out. Leave it out when nobody in particular is away. Assigning someone to a type=appointment marks them as one of the practice's practitioners; blocked time never does. |
| title | string | Προαιρετικό | Calendar label, only when the user dictated one. Omitted, the calendar shows the patient and the service. A title that only repeats names already on the booking is not written (see ignoredFields in the answer). |
| color | string | Προαιρετικό | Optional calendar colour override. Defaults to the chair's colour; sending the chair's own colour is not written. |
| serviceRef | string | Προαιρετικό | Optional free-text reference to the service being performed. |
| notes | string | Προαιρετικό | Optional free-text notes on the booking. |
| locationId | string | null | Προαιρετικό | Blocked time with no chair and no practitioner only: the location it closes, an id from list_locations, only when one was named. Omitted, the whole practice closes. |
Παράδειγμα κλήσης
action=create
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_appointment",
"arguments": {
"action": "create",
"type": "appointment",
"patientId": "0f1c7a2e-5b6d-4c3a-9e21-7b84c5d10f33",
"startAt": "2026-11-09T09:00:00.000Z",
"endAt": "2026-11-09T09:30:00.000Z",
"chairId": "6f708192-2d3e-4f80-9b4c-5d6e7f8091a2"
}
}
}action=update
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_appointment",
"arguments": {
"action": "update",
"appointmentId": "2b3c4d5e-8f9a-4b6c-9d0e-1f2a3b4c5d6e",
"expectedDate": "2026-11-09",
"startAt": "2026-11-09T10:00:00.000Z",
"endAt": "2026-11-09T10:30:00.000Z"
}
}
}action=confirm
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_appointment",
"arguments": {
"action": "confirm",
"appointmentId": "2b3c4d5e-8f9a-4b6c-9d0e-1f2a3b4c5d6e",
"chairId": "6f708192-2d3e-4f80-9b4c-5d6e7f8091a2"
}
}
}action=decline
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_appointment",
"arguments": {
"action": "decline",
"appointmentId": "2b3c4d5e-8f9a-4b6c-9d0e-1f2a3b4c5d6e",
"expectedDate": "2026-11-09"
}
}
}action=cancel
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_appointment",
"arguments": {
"action": "cancel",
"appointmentId": "2b3c4d5e-8f9a-4b6c-9d0e-1f2a3b4c5d6e",
"expectedDate": "2026-11-09"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the written record" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| conflict | 409 | Η έδρα ή ο επαγγελματίας υγείας έχει ήδη κράτηση σε μέρος αυτής της ώρας, ή η κράτηση δεν είναι σε κατάσταση από την οποία επιτρέπεται αυτή η ενέργεια (μια ακυρωμένη κράτηση δεν επιβεβαιώνεται). |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
| subscription_read_only | 403 | Η συνδρομή έχει λήξει, οπότε το ιατρείο είναι μόνο για ανάγνωση και δεν γράφεται τίποτα. |
Συχνές ερωτήσεις
Οι καρτέλες ασθενών κρυπτογραφούνται, και εκεί που φυλάσσονται και καθώς έρχονται στην οθόνη σας. Τα αρχεία είναι ιδιωτικά, και ο σύνδεσμος προς ένα αρχείο σταματά να δουλεύει μετά από λίγο. Οι αλλαγές στις καρτέλες των ασθενών καταγράφονται, με το ποιος τις έκανε και πότε. Δεν υπάρχει κοινός κωδικός ιατρείου: ο καθένας έχει τον δικό του λογαριασμό. Στο πακέτο Complete, ο ιδιοκτήτης του ιατρείου μπορεί επίσης να απαιτεί σύνδεση σε δύο βήματα για όλη την ομάδα.
Ναι. Ο ιδιοκτήτης του ιατρείου μπορεί να εξάγει τον κατάλογο ασθενών, τις αναφορές και το ιστορικό ενεργειών σε αρχείο υπολογιστικού φύλλου (CSV) μέσα από την εφαρμογή, και οποιοσδήποτε στο ιατρείο μπορεί να κατεβάσει τα αρχεία του οποιαδήποτε στιγμή. Τα δεδομένα του ιατρείου σας ανήκουν σε εσάς, χωρίς χρέωση ή καθυστέρηση εξαγωγής. Αυτό ισχύει και στα δύο πακέτα, στη δοκιμή, αλλά και μετά την ακύρωση.
Το HyperCRM είναι λογισμικό επί πληρωμή. Κάθε ιατρείο ξεκινά με δωρεάν δοκιμή 30 ημερών στο πακέτο Complete, χωρίς κάρτα. Στη συνέχεια τα πακέτα ξεκινούν από 19 € και 34 € τον μήνα, με ΦΠΑ. Η τιμή εξαρτάται από το πόσους επαγγελματίες υγείας απασχολείτε. Κάθε τιμή βρίσκεται στη σελίδα τιμών, οπότε δεν χρειάζεται να μιλήσετε με πωλητή.