Appointo MCP by usefulapi

Read Appointo bookings, availability and subscriptions; create, reschedule and cancel bookings.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
95%
Qualität der Benennung
74%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (3)

  • LOWTool 'appointo_list_cancelled_bookings' name length outside 3-30 rangein appointo_list_cancelled_bookings
  • LOWTool 'appointo_list_subscription_contracts' name length outside 3-30 rangein appointo_list_subscription_contracts
  • LOWTool 'appointo_update_booking_buffers' name length outside 3-30 rangein appointo_update_booking_buffers

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~2,567Tokens (Tool-Definitionen)
~1.8 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.01% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "appointo": {
      "url": "https://appointo.usefulapi.io/mcp"
    }
  }
}

Remote-Endpunkte

https://appointo.usefulapi.io/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (10)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢appointo_list_products(search_term, limit, offset)

List the Shopify products that are set up as bookable in Appointo: name, appointment type, whether the widget is shown, and each product's appointments (the bookable variants/services with price, currency and id). Use an appointment id for availability and bookings. GET /products.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "search_term": {
      "description": "Filter by product name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢appointo_list_appointments(appointment_id, product_id, search_term, limit, offset)

List appointments, i.e. the bookable services/variants, with name, price, currency and configuration. Filter by product or fetch one by id. These are the services customers book, not the bookings themselves (use appointo_list_bookings for those). GET /appointments.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "description": "Fetch a single appointment by id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "product_id": {
      "description": "Only appointments of this Appointo product id (the `id` from appointo_list_products).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "search_term": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢appointo_get_availability(appointment_id, start_date, end_date)

The free time slots of one appointment (bookable service) from start_date, optionally to end_date. Use it before creating or rescheduling a booking. GET /appointments/{appointment_id}/calendar_availability.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Appointo appointment id (from appointo_list_appointments)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "First day, yyyy-mm-dd."
    },
    "end_date": {
      "description": "Last day, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    }
  },
  "required": [
    "appointment_id",
    "start_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢appointo_list_bookings(booking_id, status, search_term, limit, offset)

List bookings with time, product, duration, quantity, price and the customers (name, email, phone, address). Filter upcoming/past or search; pass booking_id for one booking. The customers' cancel/reschedule link ids are never returned. GET /bookings.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "booking_id": {
      "description": "Fetch a single booking by id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "status": {
      "description": "Only upcoming or only past bookings.",
      "type": "string",
      "enum": [
        "upcoming",
        "past"
      ]
    },
    "search_term": {
      "description": "Searches product name, customer name, email, phone and order name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢appointo_list_cancelled_bookings(status, search_term, limit, offset)

List cancelled bookings, same shape as appointo_list_bookings. GET /bookings/cancelled_bookings.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Only upcoming or only past bookings.",
      "type": "string",
      "enum": [
        "upcoming",
        "past"
      ]
    },
    "search_term": {
      "description": "Searches product name, customer name, email, phone and order name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢appointo_list_subscription_contracts(search_term)

List the recurring booking subscription contracts (customers who subscribed to repeat appointments). Search by product, variant, order number or customer name. The API documents no paging for this list. GET /appointment_subscriptions.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "search_term": {
      "description": "Product name, variant name, order number or customer name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴appointo_create_booking(appointment_id, timestring, name, email, phone, ...)

WRITE: create a booking for a customer on an appointment (bookable service) at a time slot. This is a real booking: Appointo may email the customer a confirmation and reserve the slot; the booking can later be cancelled with appointo_cancel_booking. Check appointo_get_availability first. Not idempotent: calling twice creates two bookings. The docs cap this at 100 requests per day. POST /bookings.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Appointo appointment id (from appointo_list_appointments)."
    },
    "timestring": {
      "type": "string",
      "description": "Start of the time slot, ISO 8601, e.g. 2026-11-03T14:00:00-05:00 (use a date only, 2026-11-03, for a day booking). Check appointo_get_availability for real slots."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Customer name."
    },
    "email": {
      "type": "string",
      "minLength": 3,
      "maxLength": 254,
      "pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$",
      "description": "Customer email."
    },
    "phone": {
      "description": "Customer phone number.",
      "type": "string",
      "minLength": 1,
      "maxLength": 40
    },
    "quantity": {
      "description": "Number of spots (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    }
  },
  "required": [
    "appointment_id",
    "timestring",
    "name",
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴appointo_reschedule_booking(booking_id, timestring, customer_ids, override)

WRITE: move a booking (or only some of its customers) to a new time slot. Appointo may notify the customers of the change. override=true forces the booking into the slot even if it is unavailable or full, so leave it off unless the user explicitly asked for it. The docs cap this at 100 requests per day. PUT /bookings/reschedule.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "booking_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Booking id (from appointo_list_bookings)."
    },
    "timestring": {
      "type": "string",
      "description": "Start of the time slot, ISO 8601, e.g. 2026-11-03T14:00:00-05:00 (use a date only, 2026-11-03, for a day booking). Check appointo_get_availability for real slots."
    },
    "customer_ids": {
      "description": "Only move these customer ids of the booking; omit to move the whole booking.",
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "override": {
      "description": "Force the slot even if unavailable (default false).",
      "type": "boolean"
    }
  },
  "required": [
    "booking_id",
    "timestring"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴appointo_cancel_booking(booking_id, customer_ids)

WRITE: cancel a booking, or only some of its customers. The slot is freed and Appointo may notify the customers; whether a Shopify order is refunded is not controlled by this call. Cannot be undone through this server (create a new booking instead). The docs cap this at 100 requests per day. PUT /bookings/cancel.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "booking_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Booking id (from appointo_list_bookings)."
    },
    "customer_ids": {
      "description": "Only cancel these customer ids of the booking; omit to cancel the whole booking.",
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    }
  },
  "required": [
    "booking_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴appointo_update_booking_buffers(booking_id, start_buffer_time, end_buffer_time)

WRITE: set the start and/or end buffer time (minutes blocked before/after) of one booking. At least one value is required. The docs cap this at 100 requests per day. PUT /bookings/{booking_id}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "booking_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Booking id (from appointo_list_bookings)."
    },
    "start_buffer_time": {
      "description": "Buffer before the booking, minutes (> 0).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "end_buffer_time": {
      "description": "Buffer after the booking, minutes (> 0).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "booking_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet10 Tools