WuBook MCP by usefulapi

Read WuBook ZaK rooms, availability and reservations; manage inventory and guest check-in.

¿Debería usar esto?

Calidad y seguridad

B
Calidad de la descripción
93%
Integridad del esquema
67%
Calidad de los nombres
79%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'wubook_list_todays_reservations' name length outside 3-30 rangeen wubook_list_todays_reservations

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,401Tokens (definiciones de herramientas)
~1.5 KBTamaño de respuesta típico
Impacto significativo en la atención (3.44% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (19)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢wubook_list_rooms

List the physical rooms of the property (id, room type id, name, tags). POST /kp/property/fetch_rooms.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_list_room_types

List the room types (id, name, short name, default price, default occupancy). POST /kp/property/fetch_room_types.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_list_rates

List the rates of the property (id, name, board, currency, standard flag). Use a rate id for prices and restrictions. POST /kp/property/fetch_rates.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_list_products

List the products (a room type sold on a board basis: id, room type id, name, default price, occupancy). Product ids are the keys of prices and availability. POST /kp/property/fetch_products.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_list_meal_boards

List the meal rules and meal prices per board type (fb, hb, bb, ai) for adults, teens, children and babies. POST /kp/property/fetch_meals_board.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_list_extras

List the extras the property sells (id, name, price, VAT percentage, cost, tags). POST /kp/property/fetch_extras.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_get_inventory_symbols

The meaning of the short keys in prices and restrictions (p price, a availability, m MinStay, M MaxStay, c closure, ...). POST /kp/inventory/fetch_symbols.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_get_room_availability(arrival, departure)

Availability for a stay: for each room type id, the number of rooms available and the ids of the available physical rooms. The availability count can be lower than the number of listed physical rooms when a reservation has no physical room assigned yet; use the availability count when assessing bookable capacity. POST /kp/inventory/fetch_rooms_availability.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "arrival": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Arrival date, yyyy-mm-dd."
    },
    "departure": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Departure date, yyyy-mm-dd."
    }
  },
  "required": [
    "arrival",
    "departure"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_get_rate_values(from, rate_id, days)

Daily prices, availability and restrictions of one rate, starting at a date: for each product id a list with one object per day (p price, a availability, m/M min/max stay, c closed, ...; see wubook_get_inventory_symbols). POST /kp/inventory/fetch_rate_values.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "First day, yyyy-mm-dd."
    },
    "rate_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Rate id (wubook_list_rates)."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 366,
      "description": "Number of days from `from`, 1-366."
    }
  },
  "required": [
    "from",
    "rate_id",
    "days"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴wubook_update_inventory(from, rate_id, products)

WRITE: overwrite daily prices, availability and stay restrictions of one rate. `products` maps a product id to a list of day objects; the first object is the day `from`, the next the following day, and so on. Only the fields you send per day change. Changes can be pushed to connected channels (OTAs) and affect live bookings, so confirm the values with the user first. POST /kp/inventory/write.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "First day the lists start at, yyyy-mm-dd."
    },
    "rate_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Rate id (wubook_list_rates)."
    },
    "products": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^[1-9]\\d{0,15}$"
      },
      "additionalProperties": {
        "minItems": 1,
        "maxItems": 366,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "p": {
              "description": "Price.",
              "type": "number",
              "minimum": 0,
              "maximum": 10000000
            },
            "a": {
              "description": "Availability (rooms).",
              "type": "integer",
              "minimum": 0,
              "maximum": 100000
            },
            "m": {
              "description": "Minimum stay (nights).",
              "type": "integer",
              "minimum": 1,
              "maximum": 365
            },
            "M": {
              "description": "Maximum stay (nights).",
              "type": "integer",
              "minimum": 1,
              "maximum": 365
            },
            "ma": {
              "description": "Minimum stay by arrival date.",
              "type": "integer",
              "minimum": 1,
              "maximum": 365
            },
            "Ma": {
              "description": "Maximum stay by arrival date.",
              "type": "integer",
              "minimum": 1,
              "maximum": 365
            },
            "ni": {
              "description": "1 = no check-in on this day.",
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "const": 1
                }
              ]
            },
            "no": {
              "description": "1 = no check-out on this day.",
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "const": 1
                }
              ]
            },
            "c": {
              "description": "1 = closed for sale on this day.",
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "const": 1
                }
              ]
            },
            "nt": {
              "description": "1 = no OTA reservations on this day.",
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "const": 1
                }
              ]
            },
            "mx": {
              "description": "Minimum advance to book (hours).",
              "type": "integer",
              "minimum": 0,
              "maximum": 100000
            },
            "Mx": {
              "description": "Maximum advance to book.",
              "type": "integer",
              "minimum": 0,
              "maximum": 100000
            },
            "o": {
              "description": "1 = overbooking allowed.",
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "const": 1
                }
              ]
            },
            "l": {
              "description": "Maximum OTA reservations.",
              "type": "integer",
              "minimum": 0,
              "maximum": 100000
            }
          },
          "additionalProperties": false
        }
      },
      "description": "Product id → one object per day, e.g. {\"12\": [{\"p\": 90, \"a\": 3}, {\"p\": 95}]}. Keys: p price, a availability, m/M min/max stay, ma/Ma by arrival, ni no check-in, no no check-out, c closed, nt no OTA, mx/Mx advance, o overbooking, l max OTA."
    }
  },
  "required": [
    "from",
    "rate_id",
    "products"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_get_reservation(reservation_id, reservation_code)

One reservation by id or by reservation code (XY-0001): status, booker customer id, origin channel, board, dates, price split (rooms, extras, meals), payment, taxes and rooms with occupancy and customer ids. POST /kp/reservations/fetch_one_reservation.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "reservation_id": {
      "description": "Reservation id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reservation_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$",
      "description": "Reservation (human) code such as XY-0001."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_list_reservations(created_from, created_to, arrival_from, arrival_to, departure_from, ...)

List reservations, optionally filtered by creation, arrival or departure date ranges (inclusive). Newest first is not guaranteed; page with offset. Returns the page plus next_offset (null when the last page was reached). POST /kp/reservations/fetch_reservations.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "created_from": {
      "description": "Created on or after (yyyy-mm-dd). Needs created_to.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "created_to": {
      "description": "Created on or before.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "arrival_from": {
      "description": "Arriving on or after. Needs arrival_to.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "arrival_to": {
      "description": "Arriving on or before.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "departure_from": {
      "description": "Departing on or after. Needs departure_to.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "departure_to": {
      "description": "Departing on or before.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "limit": {
      "description": "Page size: 8, 16, 32 or 64 (default 32).",
      "anyOf": [
        {
          "type": "number",
          "const": 8
        },
        {
          "type": "number",
          "const": 16
        },
        {
          "type": "number",
          "const": 32
        },
        {
          "type": "number",
          "const": 64
        }
      ]
    },
    "offset": {
      "description": "Reservations 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"
}
🟢wubook_list_todays_reservations

Reservations of the property for today (arrivals, departures and stays in house). POST /kp/reservations/fetch_today_reservations.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡wubook_create_reservation(arrival, departure, guest, rooms, products, ...)

WRITE: create a reservation in ZaK for one guest. Give rooms (room type and optionally the physical room id, with price and currency) and/or products (product id with price and currency). Set assign_rooms to let ZaK pick the physical rooms. This books inventory and is NOT idempotent: calling it twice creates two reservations, so check wubook_get_room_availability first and do not retry on an error without looking the reservation up. POST /kp/reservations/new.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "arrival": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Arrival date, yyyy-mm-dd."
    },
    "departure": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Departure date, yyyy-mm-dd (after arrival)."
    },
    "guest": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "surname": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "email": {
          "type": "string",
          "maxLength": 200,
          "format": "email",
          "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
        },
        "phone": {
          "type": "string",
          "minLength": 3,
          "maxLength": 40
        }
      },
      "required": [
        "name",
        "surname"
      ],
      "additionalProperties": false,
      "description": "The booker."
    },
    "rooms": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "room_type": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Room type id (wubook_list_room_types)."
          },
          "room": {
            "description": "Physical room id (wubook_list_rooms); leave out with assign_rooms.",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "price": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          }
        },
        "required": [
          "room_type",
          "price",
          "currency"
        ],
        "additionalProperties": false
      }
    },
    "products": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Product id (wubook_list_products)."
          },
          "price": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          }
        },
        "required": [
          "product",
          "price",
          "currency"
        ],
        "additionalProperties": false
      }
    },
    "assign_rooms": {
      "description": "Let ZaK choose physical rooms for entries without a room id.",
      "type": "boolean"
    }
  },
  "required": [
    "arrival",
    "departure",
    "guest"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴wubook_check_in(reservation_id, reservation_code, room_customer_ids)

WRITE: check in the guests of a reservation in ZaK. Applies to every guest of the reservation unless room_customer_ids is given. POST /kp/reservations/do_checkin.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "reservation_id": {
      "description": "Reservation id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reservation_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$",
      "description": "Reservation (human) code such as XY-0001."
    },
    "room_customer_ids": {
      "description": "Only these reservation-room guest ids (default: all guests).",
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴wubook_check_out(reservation_id, reservation_code, room_customer_ids)

WRITE: check out the guests of a reservation in ZaK. Applies to every guest of the reservation unless room_customer_ids is given. POST /kp/reservations/do_checkout.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "reservation_id": {
      "description": "Reservation id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reservation_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$",
      "description": "Reservation (human) code such as XY-0001."
    },
    "room_customer_ids": {
      "description": "Only these reservation-room guest ids (default: all guests).",
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴wubook_undo_check_in(reservation_id, reservation_code)

WRITE: revert the check-in of a reservation in ZaK. POST /kp/reservations/undo_checkin.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "reservation_id": {
      "description": "Reservation id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reservation_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$",
      "description": "Reservation (human) code such as XY-0001."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴wubook_undo_check_out(reservation_id, reservation_code)

WRITE: revert the check-out of a reservation in ZaK. POST /kp/reservations/undo_checkout.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "reservation_id": {
      "description": "Reservation id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reservation_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$",
      "description": "Reservation (human) code such as XY-0001."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢wubook_get_customer(customer_id, include_documents)

One guest record by customer id (from a reservation's booker or room customers): name, country, address, contact, birth data, billing info. Personal data. Identity documents (type, number, expiry) are left out unless include_documents is true. POST /kp/customers/fetch_one.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Customer id."
    },
    "include_documents": {
      "description": "Also return the guest's identity documents (default false).",
      "type": "boolean"
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada19 herramientas