Skip to content

Bookeo MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Check Bookeo availability and manage bookings, holds and customers; read payments.

Deletes · 6

21 tools: 6 can delete or cancel things and 15 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http bookeo https://bookeo.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 info

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

21 tools

Deletes or cancels 6Claude Code: deny
  • bookeo_cancel_bookingCancel a booking.No findings

    Why it is in this group

    • The name "bookeo_cancel_booking" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a booking. It stays in the system (visible with includeCanceled) but frees its seats. The account's cancellation policy is NOT applied, so no cancellation fee is charged. Bookeo: DELETE /bookings/{bookingNumber}.

    Annotations the server declares

    • title: Cancel a booking
    • destructiveHint: true
  • bookeo_create_bookingCreate a confirmed booking for an existing customer (customerId) or a new one (customer).No findings

    Why it is in this group

    • The name "bookeo_create_booking" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a confirmed booking for an existing customer (customerId) or a new one (customer). fixed/fixedCourse products need an eventId from the availability tools; flexibleTime products take eventId or startTime. Pass previousHoldId to convert a hold. Does NOT record any payment. Reversible with bookeo_cancel_booking. Bookeo: POST /bookings.

    Annotations the server declares

    • title: Create a booking
    • destructiveHint: true
  • bookeo_create_customerCreate a customer record.No findings

    Why it is in this group

    • The name "bookeo_create_customer" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a customer record. Not needed before booking — bookeo_create_booking can create the customer inline. Bookeo: POST /customers.

    Annotations the server declares

    • title: Create a customer
    • destructiveHint: true
  • bookeo_create_holdTemporarily reserve the seats/resources for a draft booking (default 300 s, max 600 s) and get the FINAL price, taxes and amount payable.No findings

    Why it is in this group

    • The name "bookeo_create_hold" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Temporarily reserve the seats/resources for a draft booking (default 300 s, max 600 s) and get the FINAL price, taxes and amount payable. The recommended step before bookeo_create_booking: pass the returned hold id as previousHoldId there. Holds expire automatically. Bookeo: POST /holds.

    Annotations the server declares

    • title: Hold seats (price check)
    • destructiveHint: true
  • bookeo_update_bookingChange an existing booking — reschedule (eventId or startTime/endTime), change participant counts, options, resources or external reference.No findings

    Why it is in this group

    • The name "bookeo_update_booking" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change an existing booking — reschedule (eventId or startTime/endTime), change participant counts, options, resources or external reference. Fetches the current booking and sends it back with only your changes applied (Bookeo's PUT takes the full booking). Bookeo: GET then PUT /bookings/{bookingNumber}.

    Annotations the server declares

    • title: Update a booking
    • destructiveHint: true
  • bookeo_update_customerUpdate a customer's contact details.No findings

    Why it is in this group

    • The name "bookeo_update_customer" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Update a customer's contact details. Fetches the current record and sends it back with only your changes applied (Bookeo's PUT takes the full customer). Bookeo: GET then PUT /customers/{id}.

    Annotations the server declares

    • title: Update a customer
    • destructiveHint: true
Only reads 15Claude Code: allow
  • bookeo_get_api_key_infoShow which Bookeo account the credentials belong to and which permissions were granted (e.g.1 finding

    Why it is in this group

    • The name "bookeo_get_api_key_info" says "get": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "Show which Bookeo account the credentials belong to and which permissions were gr..."

      What this check looks for
    Description, as the server wrote it
    Show which Bookeo account the credentials belong to and which permissions were granted (e.g. bookings_rw_all, customers_r_all, availability_r). A cheap way to confirm the setup works. Bookeo: GET /settings/apikeyinfo.

    Annotations the server declares

    • title: Get API key info
    • readOnlyHint: true
  • bookeo_get_availability_slotsList available slots (eventId, start/end, seats available) for fixed and fixedCourse products in a time window of at most 31 days.No findings

    Why it is in this group

    • The name "bookeo_get_availability_slots" says "get": a word for reading.
    Description, as the server wrote it
    List available slots (eventId, start/end, seats available) for fixed and fixedCourse products in a time window of at most 31 days. Not for flexibleTime products — use bookeo_search_matching_slots for those. Bookeo: GET /availability/slots.

    Annotations the server declares

    • title: Get availability slots
    • readOnlyHint: true
  • bookeo_get_bookingGet one booking by its booking number: product, times, participants, options, price, paid amount, status (canceled/accepted/noShow).No findings

    Why it is in this group

    • The name "bookeo_get_booking" says "get": a word for reading.
    Description, as the server wrote it
    Get one booking by its booking number: product, times, participants, options, price, paid amount, status (canceled/accepted/noShow). Bookeo: GET /bookings/{bookingNumber}.

    Annotations the server declares

    • title: Get a booking
    • readOnlyHint: true
  • bookeo_get_businessGet the business's name, contact details, address, website and description.No findings

    Why it is in this group

    • The name "bookeo_get_business" says "get": a word for reading.
    Description, as the server wrote it
    Get the business's name, contact details, address, website and description. Bookeo: GET /settings/business.

    Annotations the server declares

    • title: Get the business
    • readOnlyHint: true
  • bookeo_get_customerGet one customer: contact details, next/previous booking, number of bookings, cancellations and no-shows, membership and store credit.No findings

    Why it is in this group

    • The name "bookeo_get_customer" says "get": a word for reading.
    Description, as the server wrote it
    Get one customer: contact details, next/previous booking, number of bookings, cancellations and no-shows, membership and store credit. Bookeo: GET /customers/{id}.

    Annotations the server declares

    • title: Get a customer
    • readOnlyHint: true
  • bookeo_get_paymentGet one payment: amount, method, reason, received time, customer and gateway transaction id.No findings

    Why it is in this group

    • The name "bookeo_get_payment" says "get": a word for reading.
    Description, as the server wrote it
    Get one payment: amount, method, reason, received time, customer and gateway transaction id. Bookeo: GET /payments/{id}.

    Annotations the server declares

    • title: Get a payment
    • readOnlyHint: true
  • bookeo_list_booking_paymentsList the payments (and refunds, as negative amounts) received for one booking.No findings

    Why it is in this group

    • The name "bookeo_list_booking_payments" says "list": a word for reading.
    Description, as the server wrote it
    List the payments (and refunds, as negative amounts) received for one booking. Bookeo: GET /bookings/{bookingNumber}/payments.

    Annotations the server declares

    • title: List a booking's payments
    • readOnlyHint: true
  • bookeo_list_bookingsList bookings by start time (startTime+endTime) and/or by last change (lastUpdatedStartTime+lastUpdatedEndTime) — at least one pair is required, each spanning at most 31 days.No findings

    Why it is in this group

    • The name "bookeo_list_bookings" says "list": a word for reading.
    Description, as the server wrote it
    List bookings by start time (startTime+endTime) and/or by last change (lastUpdatedStartTime+lastUpdatedEndTime) — at least one pair is required, each spanning at most 31 days. Optionally filter by product, include canceled bookings, and expand customer/participant details. Bookeo: GET /bookings.

    Annotations the server declares

    • title: List bookings
    • readOnlyHint: true
  • bookeo_list_customer_bookingsList one customer's bookings, optionally between two dates.No findings

    Why it is in this group

    • The name "bookeo_list_customer_bookings" says "list": a word for reading.
    Description, as the server wrote it
    List one customer's bookings, optionally between two dates. Bookeo: GET /customers/{id}/bookings.

    Annotations the server declares

    • title: List a customer's bookings
    • readOnlyHint: true
  • bookeo_list_customersList or search customers — by name, firstName, lastName or emailAddress — optionally only members/non-members or those created since a date.No findings

    Why it is in this group

    • The name "bookeo_list_customers" says "list": a word for reading.
    Description, as the server wrote it
    List or search customers — by name, firstName, lastName or emailAddress — optionally only members/non-members or those created since a date. Bookeo: GET /customers.

    Annotations the server declares

    • title: List customers
    • readOnlyHint: true
  • bookeo_list_paymentsList payments received in a time period, optionally by payment method.No findings

    Why it is in this group

    • The name "bookeo_list_payments" says "list": a word for reading.
    Description, as the server wrote it
    List payments received in a time period, optionally by payment method. Refunds are included with a negative amount. Bookeo: GET /payments.

    Annotations the server declares

    • title: List payments
    • readOnlyHint: true
  • bookeo_list_people_categoriesList the participant categories the account uses (default Adults/Children/Infants plus custom ones like Students), with their ids and seats taken.No findings

    Why it is in this group

    • The name "bookeo_list_people_categories" says "list": a word for reading.
    Description, as the server wrote it
    List the participant categories the account uses (default Adults/Children/Infants plus custom ones like Students), with their ids and seats taken. Needed for peopleNumbers. Bookeo: GET /settings/peoplecategories.

    Annotations the server declares

    • title: List people categories
    • readOnlyHint: true
  • bookeo_list_productsList the bookable products (tours, classes, courses, appointments) with their ids, type (fixed, fixedCourse, flexibleTime), duration, participant limits per people category, defaul…No findings

    Why it is in this group

    • The name "bookeo_list_products" says "list": a word for reading.
    Description, as the server wrote it
    List the bookable products (tours, classes, courses, appointments) with their ids, type (fixed, fixedCourse, flexibleTime), duration, participant limits per people category, default rates and options. Bookeo: GET /settings/products.

    Annotations the server declares

    • title: List products
    • readOnlyHint: true
  • bookeo_list_resourcesList resource types and their resources (guides, instructors, rooms, boats...) with ids.No findings

    Why it is in this group

    • The name "bookeo_list_resources" says "list": a word for reading.
    Description, as the server wrote it
    List resource types and their resources (guides, instructors, rooms, boats...) with ids. Bookeo: GET /settings/resources.

    Annotations the server declares

    • title: List resources
    • readOnlyHint: true
  • bookeo_search_matching_slotsFind slots that can take a given party (participant counts per category, options, resources), with an estimated price.No findings

    Why it is in this group

    • The name "bookeo_search_matching_slots" says "search": a word for reading.
    Description, as the server wrote it
    Find slots that can take a given party (participant counts per category, options, resources), with an estimated price. Works for all product types, including flexibleTime appointments. Window max 31 days. To page through results pass only pageNavigationToken (+ pageNumber). Read-only. Bookeo: POST /availability/matchingslots, GET /availability/matchingslots/{pageNavigationToken}.

    Annotations the server declares

    • title: Search matching slots
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http bookeo https://bookeo.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__bookeo__bookeo_get_api_key_info",
      "mcp__bookeo__bookeo_get_business",
      "mcp__bookeo__bookeo_list_products",
      "mcp__bookeo__bookeo_list_people_categories",
      "mcp__bookeo__bookeo_list_resources",
      "mcp__bookeo__bookeo_get_availability_slots",
      "mcp__bookeo__bookeo_search_matching_slots",
      "mcp__bookeo__bookeo_list_bookings",
      "mcp__bookeo__bookeo_get_booking",
      "mcp__bookeo__bookeo_list_booking_payments",
      "mcp__bookeo__bookeo_list_customers",
      "mcp__bookeo__bookeo_get_customer",
      "mcp__bookeo__bookeo_list_customer_bookings",
      "mcp__bookeo__bookeo_list_payments",
      "mcp__bookeo__bookeo_get_payment"
    ],
    "ask": [],
    "deny": [
      "mcp__bookeo__bookeo_create_hold",
      "mcp__bookeo__bookeo_create_booking",
      "mcp__bookeo__bookeo_update_booking",
      "mcp__bookeo__bookeo_cancel_booking",
      "mcp__bookeo__bookeo_create_customer",
      "mcp__bookeo__bookeo_update_customer"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as bookeo. Review it before you use it.