Skip to main content
Glama

Server Details

Find free appointment and table times at Gaplessly venues, then hand the guest a booking link.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.5/5.0

Scored across 5 tools

Disambiguation5/5

The five tools split cleanly along one axis: appointment-based (book_appointment, find_appointment_times) vs table-based (book_table, find_table_times), with get_venue as the shared entry point. Descriptions explicitly cross-reference the counterpart tool ('Use find_table_times for a restaurant instead'), removing any risk of misselection.

Naming Consistency5/5

Every tool follows a strict verb_noun snake_case pattern (get_venue, find_appointment_times, book_appointment). The appointment/table pairs are named in perfect parallel, making the domain split readable from the names alone.

Tool Count5/5

Five tools is exactly the surface needed for this flow: one venue lookup, two search tools, two booking-link generators. Nothing is redundant and nothing feels padded; each tool earns its place.

Completeness4/5

The find -> link -> hand-off lifecycle is fully covered for both bookings, and get_venue supplies the required slug/service ids. Minor gap: there is no way to list or search venues to obtain a slug, and no management of existing bookings, so the surface depends on the caller already knowing the venue.

Available Tools

5 tools
book_appointmentStart an appointment bookingA
Read-onlyIdempotent
Inspect

Turn a time from find_appointment_times into a link the guest taps to finish booking. This does NOT book anything: it returns a short-lived URL on the venue's own booking page, already opened at that service, that staff member and that exact time, where the guest enters their own name, email and phone and confirms.

Give the guest the url and say plainly that the booking is not made until they open it. Never ask the guest for their contact details to pass here; this tool does not take them, and the page collects them directly. Nothing is reserved in the meantime, so a popular time can still go before they tap.

ParametersJSON Schema
NameRequiredDescriptionDefault
venueYesThe venue's booking slug, exactly as get_venue returned it or as it appears in the venue's own booking link (the last path segment of gaplessly.com/book/<slug>). Not the business name.
serviceIdYesThe same service id passed to find_appointment_times, from get_venue. The link opens on this service.
slotTokenYesA `slotToken` from find_appointment_times or find_table_times, copied exactly. It is signed and carries the venue and the time inside the signature, so it cannot be edited, built by hand, or used at a different venue. It expires about 30 minutes after the search.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare readOnlyHint, idempotentHint, destructiveHint=false, but the description adds substantial behavioral context beyond them: the URL is short-lived, nothing is reserved, a popular slot can still be lost, and the page itself collects contact details. This is exactly the kind of non-inferable behavior an agent needs.

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

Conciseness4/5

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

Front-loaded with the core 'this does not book' clarification, then the mechanics and the guest-handling caveat. Every sentence earns its place, though it runs slightly long for a three-parameter tool.

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?

With no output schema, the description correctly explains the return value (the url) and the tool's non-mutating nature. Combined with annotations covering safety, an agent has everything needed to call it and instruct the guest correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces the slotToken's signed/expiring nature and the venue slug's origin, but these are already documented in the schema; it adds little parameter-specific meaning beyond what structured fields provide.

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?

States a specific verb and resource: it converts a time from find_appointment_times into a guest-tappable booking link. It explicitly negates the sibling action with 'This does NOT book anything', so an agent can distinguish it from book_table without opening either schema.

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?

Names the prerequisite tool (find_appointment_times) as the source of the time, states the negative case (it does not book), and gives operational guidance ('Give the guest the url', 'Never ask the guest for their contact details'). Clearly tells the agent when and how to use it.

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

book_tableStart a table bookingA
Read-onlyIdempotent
Inspect

Turn a time from find_table_times into a link the guest taps to finish booking. This does NOT book anything: it returns a short-lived URL on the venue's own booking page, already opened at that party size and that exact sitting, where the guest enters their own details and confirms.

The venue holds the table from the moment the guest opens the link, for about ten minutes, which is what gives them time to fill the form in. Until they open it nothing is held, so give them the url promptly and say the table is not theirs until they do.

ParametersJSON Schema
NameRequiredDescriptionDefault
venueYesThe venue's booking slug, exactly as get_venue returned it or as it appears in the venue's own booking link (the last path segment of gaplessly.com/book/<slug>). Not the business name.
partySizeYesThe same party size passed to find_table_times. The link opens on it.
slotTokenYesA `slotToken` from find_appointment_times or find_table_times, copied exactly. It is signed and carries the venue and the time inside the signature, so it cannot be edited, built by hand, or used at a different venue. It expires about 30 minutes after the search.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, and the description reinforces this by stating it books nothing, then adds genuinely new behavioral context: a short-lived URL, a ~ten-minute hold that begins only when the guest opens the link, and nothing held beforehand. This is exactly the operational detail annotations cannot carry.

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

Conciseness4/5

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

Front-loads the most important clarification (this does not book) before detailing the URL mechanism and the hold. Two tight paragraphs, though the second paragraph's 'tenant' guidance repeats the do-not-hold point slightly.

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?

With no output schema, the description correctly explains the return value (a short-lived url) and the agent's obligation to hand it over promptly. For a three-required-param, non-destructive tool this is complete enough to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so venue, partySize, and slotToken are already fully documented including the signing/expiry semantics of slotToken. The description only loosely ties the URL to 'that party size and that exact sitting', adding no meaning beyond the schema, so baseline 3 applies.

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?

States a specific verb+resource outcome (turn a find_table_times slot into a tappable booking link) and immediately distinguishes it from what an agent might assume by clarifying it does NOT book anything. This makes it easily separable from its sibling book_appointment.

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

Usage Guidelines4/5

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

Explicitly names the upstream source (a time from find_table_times) and the downstream consumer (the guest, who completes booking themselves), giving clear context for when to call it. It does not explicitly contrast with the sibling book_appointment, which would be the natural alternative an agent might consider.

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

find_appointment_timesFind appointment timesA
Read-onlyIdempotent
Inspect

Free appointment times at one venue for one service, over up to two weeks. For salons, clinics, studios and anywhere a guest books a named service with a provider. Use find_table_times for a restaurant instead.

Needs a service id from get_venue. Each returned time has an at label to show the guest and a slotToken. The token is the booking handle: it is signed, it expires in about 30 minutes, and it is the only way a time can be booked later. Pass it back exactly as given, never edited, and never reuse one from a different venue. An empty times array for a day means that day is genuinely unavailable, not that something failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many consecutive days to search from that day, 1 to 14. Defaults to 7.
fromNoWhich day to start from: the word "today", the word "tomorrow", or an exact calendar date as YYYY-MM-DD. Resolved against the venue's own current date, which is often not yours. Do not send a phrase like "next Tuesday" or a time of day; both are rejected.
venueYesThe venue's booking slug, exactly as get_venue returned it or as it appears in the venue's own booking link (the last path segment of gaplessly.com/book/<slug>). Not the business name.
serviceIdYesOne service id from this venue's get_venue result. Not a service name.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description then adds real context beyond that: slotToken is signed, expires in ~30 minutes, must be passed back verbatim, must not be reused across venues, and an empty times array means genuine unavailability rather than failure. However, it doesn't cover return ordering, pagination, or rate limits. With annotations carrying the safety profile, a 3 is fair – meaningful additions, but the token lifecycle is the only substantial behavioral disclosure.

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?

Three tight paragraphs, front-loaded with scope, then routing, then the token contract. Every sentence carries information; there is no filler or repetition of the tool name.

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?

With no output schema, the description compensates by describing the returned payload (`at` label and `slotToken`) and the empty-array edge case. Combined with full schema coverage and annotations, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents all four parameters with constraints (days 1-14, the rejected 'next Tuesday' phrasing, the slug format). The description adds some framing (serviceId comes from get_venue, tokens are per-venue), but not enough beyond the schema to lift this above the baseline.

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?

States a specific verb and resource (free appointment times), pins the scope to one venue, one service, up to two weeks, and names the audience (salons, clinics, studios). It explicitly distinguishes itself from the sibling find_table_times, so an agent can route without opening a schema.

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?

Gives the alternative by name and the condition that selects it ("Use find_table_times for a restaurant instead") and states the prerequisite ("Needs a service id from get_venue"). Both the when and the when-not are explicit.

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

find_table_timesFind table timesA
Read-onlyIdempotent
Inspect

Free table times at one restaurant or venue for one party size, over up to two weeks. Use find_appointment_times for a salon or clinic instead.

Each returned time has an at label to show the guest and a slotToken. The token is the booking handle: it is signed, it expires in about 30 minutes, and it is the only way a time can be booked later. Pass it back exactly as given, never edited, and never reuse one from a different venue. An empty times array for a day means the venue has nothing at that party size that day, which usually means closed or fully booked; for a large party the venue may take it by phone even when nothing shows here.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHow many consecutive days to search from that day, 1 to 14. Defaults to 7.
fromNoWhich day to start from: the word "today", the word "tomorrow", or an exact calendar date as YYYY-MM-DD. Resolved against the venue's own current date, which is often not yours. Do not send a phrase like "next Tuesday" or a time of day; both are rejected.
venueYesThe venue's booking slug, exactly as get_venue returned it or as it appears in the venue's own booking link (the last path segment of gaplessly.com/book/<slug>). Not the business name.
partySizeYesHow many people are coming, including the person booking.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only cover the read-only safety profile, but the description adds substantial non-annotated behavior: the slotToken is signed, expires in ~30 minutes, is the sole booking handle, must be passed unedited, and must not be reused across venues. It also interprets the empty-`times` case and notes the phone-booking fallback for large parties.

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?

Front-loaded purpose in sentence one, sibling routing in sentence two, then the token lifecycle and empty-result meaning. Every sentence carries information an agent needs; nothing is repeated from the schema or annotations.

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?

There is no output schema, so the description correctly compensates by explaining the returned `at` label, the `slotToken`, and the empty-array case. Combined with the 100%-covered input schema and read-only annotations, an agent has everything needed to call and consume this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so days/from/venue/partySize are already fully documented with formats and constraints. The description reinforces the venue-identity constraint ('never reuse one from a different venue') but adds no syntax or semantics beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ('Free table times'), plus the scoping units (one venue, one party size, up to two weeks) that distinguish it from find_appointment_times. An agent can route between the two booking-search siblings purely from this sentence.

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

Usage Guidelines4/5

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

Explicitly names the alternative for the wrong vertical ('Use find_appointment_times for a salon or clinic instead') and clarifies that an empty result means closed/fully booked. It stops short of stating prerequisites (e.g. that a venue slug must come from get_venue's ecosystem) and when to prefer book_table over searching.

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

get_venueLook up a venueA
Read-onlyIdempotent
Inspect

Read a venue's public booking profile: what it is, where it is, what can be booked, and what time it is THERE right now. Call this first: the other tools need this venue's slug, and appointment searches need a service id from here.

Returns venueClock, which is the venue's own current date and time. Every date you ask for later is resolved against venueClock.today, not against your own today: the two are routinely different days. Times are given as text on purpose and there is no timezone identifier anywhere in the result, because converting them is how a booking ends up hours off.

ParametersJSON Schema
NameRequiredDescriptionDefault
venueYesThe venue's booking slug, exactly as get_venue returned it or as it appears in the venue's own booking link (the last path segment of gaplessly.com/book/<slug>). Not the business name.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description goes further by disclosing the `venueClock` return semantics and the non-obvious rule that all later dates resolve against `venueClock.today` rather than the caller's today, plus the deliberate absence of a timezone identifier. It stops short of describing the full shape of the profile payload, but the critical misuse hazard (date/time interpretation) is well covered.

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

Conciseness4/5

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

Front-loaded with purpose and the call-ordering rule in the first sentence, then the time-semantics caveat. Slightly longer than strictly necessary, but the second paragraph is not padding: it preempts a real failure mode (off-by-hours bookings) that no structured field communicates.

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?

There is no output schema, so the description carries the burden of explaining returns, and it does: it names `venueClock`, states the result is venue-local time as text with no timezone identifier, and explains how downstream calls should interpret dates. With one fully documented required parameter and clean annotations, nothing an agent needs to call this correctly is missing.

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 description coverage is 100% and the property description already explains the slug format exhaustively, including the 'not the business name' warning and the booking-link derivation. The description reinforces this by tying the slug back to get_venue's own output, which helps close the loop across calls, but it adds no new format detail beyond the schema.

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?

Opens with a concrete verb and resource: reading a venue's public booking profile, and enumerates what that profile contains (identity, location, bookable services, current local time). It also positions itself against siblings by declaring it must be called first, so an agent can place it in the workflow without opening any schema.

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?

Explicitly states 'Call this first' and gives the reason: other tools need the venue slug, and appointment searches need a service id from here. That is a when-to-use rule plus the dependency ordering, with no inference required.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • First observedbook_appointment
    • First observedbook_table
    • First observedfind_appointment_times
    • First observedfind_table_times
    • First observedget_venue

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Book a table, an appointment or a place in a class at a real local business. Live availability, instant confirmation, no account and no API key. Eight tools: search, fetch, get_business, check_availability, create_booking, check_booking, cancel_booking and request_listing. Guest emails in eight languages. Hosted at https://g-guest.app/api/mcp
    8
    14 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables customers and AI agents to check restaurant table availability and create bookings, returning confirmations or nearby alternative times when a slot is full, with atomic capacity control and idempotent handling.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to query real-time reservation availability for Naver Booking places in Korea, including beauty salons, restaurants, and other categories.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources