Skip to main content
Glama
h-kazuki-pixel

booking-gap MCP Server

Analyze booking gaps

booking_gap_analyze
Read-onlyIdempotent

Identifies why your booking calendar is underutilized by separating sellable idle time from unsellable gaps caused by turnover and slot alignment.

Instructions

Measure the shape of idle time in a time-based booking calendar, not just the utilization rate.

Two venues can both sit at 33% utilization while one has its idle time in long sellable blocks and the other has it scattered into slivers that can never be sold. This tool separates the two.

It classifies every gap between bookings as either:

  • sellable: long enough to book after turnover time and start-grid alignment are subtracted

  • structural dead time: too short to ever be sold under the current settings

Args:

  • bookings or bookingsCsv (required, exactly one)

  • openingHours (required)

  • minBookingMinutes, slotGranularityMinutes, turnoverMinutes: the settings that decide sellability

  • periodStart / periodEnd: analysis window (defaults to the span of the data)

  • resources: include resources that had no bookings

  • hourlyRate / currency: optional, expresses dead time as an amount

Returns a text report with utilization, sellable vs dead breakdown, fragmentation rate, a gap-length histogram, and a per-resource table.

Scope: exclusive resources only (rooms, studios, meeting rooms, treatment beds). Pooled shared seating, where any free seat can absorb a booking, uses a different model and is not supported.

Use when: "why is my utilization stuck", "how much of my empty time is actually sellable", "is my calendar fragmented". Don't use when: you want a recommended configuration — use booking_gap_simulate to compare options and decide yourself.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bookingsNoBookings as structured objects. Provide either this or bookingsCsv.
currencyNoCurrency symbol prefix, e.g. "¥".
periodEndNoLast date to analyse (YYYY-MM-DD). Defaults to the latest booking.
resourcesNoResources to include even when they have no bookings in the period.
hourlyRateNoOptional hourly price, used to express dead time as an amount. No default.
bookingsCsvNoBookings as pasted CSV or TSV with a header row. Column names are matched in English and Japanese (start/end/resource/date/status, 開始時刻/終了時刻/部屋/日付/ステータス). A separate date column plus HH:mm times is supported.
periodStartNoFirst date to analyse (YYYY-MM-DD). Defaults to the earliest booking.
openingHoursYesOpening hours. Use "default" for the usual day and override individual weekdays as needed, e.g. {"default": [["09:00","22:00"]], "sun": [["10:00","18:00"]]}. Use "24:00" to close at midnight.
timezoneOffsetNoVenue timezone offset, used only for inputs that carry an explicit offset or "Z".+09:00
turnoverMinutesNoCleaning or changeover time required between two bookings.
minBookingMinutesNoShortest booking a customer is allowed to make.
slotGranularityMinutesNoAllowed booking start interval, measured from midnight (30 means :00 and :30).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds deep behavioral context beyond the readOnlyHint/idempotentHint annotations: it explains how gaps are classified into 'sellable' vs 'structural dead time', that it returns a text report with specific components, and that pooled shared seating is explicitly out of scope. It also clarifies the role of the settings (minBookingMinutes, slotGranularityMinutes, turnoverMinutes) in determining sellability, which is vital for the agent to understand the tool's decision logic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every section earns its place: a motivating example, gap classification definitions, an Args list that maps to parameters, a Returns summary, and a Scope paragraph. It's well-structured with headers and bullet-like formatting, making it easy to scan while conveying all necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 12 parameters, nested objects, and no output schema, this description is exceptionally complete. It covers the input formats (structured objects or CSV), the analysis window defaults, the meaning of the optional hourly rate, the scope limitations, and the exact contents of the returned report. Nothing essential is left unexplained, and the tool's complexity is matched by the description's detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. However, the description adds meaningful value by stating that bookings and bookingsCsv are required but exactly one must be provided, and by grouping minBookingMinutes/slotGranularityMinutes/turnoverMinutes as 'the settings that decide sellability'. This gives higher-level understanding beyond individual schema descriptions, though the schema already covers most details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Measure the *shape* of idle time in a time-based booking calendar, not just the utilization rate.' It distinguishes itself from siblings by explicitly redirecting to booking_gap_simulate for configuration recommendations, and from booking_gap_profile and booking_gap_list_dead by focusing on the shape/classification of gaps rather than listing them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' and 'Don't use when' sections are provided, with concrete example queries ('why is my utilization stuck', 'how much of my empty time is actually sellable') and a direct alternative (booking_gap_simulate) for when the user wants a recommendation. This is exactly the kind of when/when-not/alternatives guidance the dimension asks for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/h-kazuki-pixel/booking-gap-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server