Upsalt Booking

Search Upsalt venues, check availability, and book, view, or cancel a reservation.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
100%
Calidad de los nombres
70%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (5)

  • LOWTool 'find-company' doesn't follow camelCase/snake_caseen find-company
  • LOWTool 'list-available-slots' doesn't follow camelCase/snake_caseen list-available-slots
  • LOWTool 'create-booking' doesn't follow camelCase/snake_caseen create-booking
  • LOWTool 'get-booking-info' doesn't follow camelCase/snake_caseen get-booking-info
  • LOWTool 'cancel-booking' doesn't follow camelCase/snake_caseen cancel-booking

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

Costo de contexto

~938Tokens (definiciones de herramientas)
~1.8 KBTamaño de respuesta típico
Impacto moderado en la atención (0.73% 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": {
    "upsalt-booking": {
      "url": "https://ai.upsalt.io/mcp/booking"
    }
  }
}

Puntos de conexión remotos

https://ai.upsalt.io/mcp/bookingstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (5)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢find-company(slug, business_type)

Find a company by its slug and return its public profile: services, opening hours, and booking configuration. Use this first to obtain the company_id needed by the other tools.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "description": "The company slug, as found in its booking page URL.",
      "type": "string"
    },
    "business_type": {
      "description": "Optional business type filter.",
      "type": "string"
    }
  },
  "required": [
    "slug"
  ]
}
🟢list-available-slots(company_id, date)

List the available booking slots for a company on a given date. Returns shifts and bookable hours; use the shift_id and hour when creating a booking.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "company_id": {
      "description": "The company id, as returned by the find-company tool.",
      "type": "integer"
    },
    "date": {
      "description": "The date to check, in YYYY-MM-DD format (e.g. 2026-07-20).",
      "type": "string"
    }
  },
  "required": [
    "company_id",
    "date"
  ]
}
🔴create-booking(company_id, date, hour, shift_id, adults, ...)

Create a booking for a company as a guest. Requires a date (YYYY/MM/DD), an hour and shift_id obtained from list-available-slots, and the guest contact details. On success, returns the reservation details including a token that can be used with get-booking-info and cancel-booking.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "company_id": {
      "description": "The company id, as returned by the find-company tool.",
      "type": "integer"
    },
    "date": {
      "description": "Booking date in YYYY/MM/DD format (e.g. 2026/07/20). Note the slashes.",
      "type": "string"
    },
    "hour": {
      "description": "Booking hour in HH:MM format, taken from list-available-slots.",
      "type": "string"
    },
    "shift_id": {
      "description": "The shift id, taken from list-available-slots.",
      "type": "integer"
    },
    "adults": {
      "description": "Number of adults.",
      "type": "integer"
    },
    "name": {
      "description": "Guest first name.",
      "type": "string"
    },
    "surname": {
      "description": "Guest last name.",
      "type": "string"
    },
    "email": {
      "description": "Guest email address. The booking confirmation and management token are sent here.",
      "type": "string"
    },
    "phone": {
      "description": "Guest phone number.",
      "type": "string"
    },
    "children": {
      "description": "Number of children.",
      "type": "integer"
    },
    "babies": {
      "description": "Number of babies.",
      "type": "integer"
    },
    "pets": {
      "description": "Number of pets.",
      "type": "integer"
    },
    "vegan": {
      "description": "Whether the party includes vegan guests.",
      "type": "boolean"
    },
    "vegetarian": {
      "description": "Whether the party includes vegetarian guests.",
      "type": "boolean"
    },
    "gluten_free": {
      "description": "Whether the party needs gluten-free options.",
      "type": "boolean"
    },
    "nuts_allergy": {
      "description": "Whether the party has a nut allergy.",
      "type": "boolean"
    },
    "message": {
      "description": "Optional message for the business.",
      "type": "string"
    },
    "pushchair": {
      "description": "Number of pushchairs.",
      "type": "integer"
    },
    "wheelchair": {
      "description": "Number of wheelchairs.",
      "type": "integer"
    },
    "highchair": {
      "description": "Number of highchairs.",
      "type": "integer"
    },
    "optin": {
      "description": "Marketing opt-in flag (1 or 0).",
      "type": "integer"
    },
    "latitude": {
      "description": "Guest latitude, if known.",
      "type": "number"
    },
    "longitude": {
      "description": "Guest longitude, if known.",
      "type": "number"
    },
    "country": {
      "description": "Guest country.",
      "type": "string"
    },
    "city": {
      "description": "Guest city.",
      "type": "string"
    },
    "guest_token": {
      "description": "Existing guest token, if the guest has booked before.",
      "type": "string"
    }
  },
  "required": [
    "company_id",
    "date",
    "hour",
    "shift_id",
    "adults",
    "name",
    "surname",
    "email",
    "phone"
  ]
}
🟢get-booking-info(company_id, token)

Retrieve the details of an existing booking using the management token returned by create-booking.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "company_id": {
      "description": "The company id the booking belongs to.",
      "type": "integer"
    },
    "token": {
      "description": "The booking management token returned by create-booking.",
      "type": "string"
    }
  },
  "required": [
    "company_id",
    "token"
  ]
}
🔴cancel-booking(token)

Cancel an existing booking using the management token returned by create-booking. This action is irreversible; confirm with the guest before calling it.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "token": {
      "description": "The booking management token returned by create-booking.",
      "type": "string"
    }
  },
  "required": [
    "token"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada5 herramientas
verificadoversión no registrada5 herramientas
verificadoversión no registrada5 herramientas