protogrid

Search / com.gaplessly/booking

Gaplessly Booking

R0· no sign-in

Find free times at Gaplessly businesses on a plan with AI booking, then get a link to book.

v1.1.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality90strong
Trust83of 100
Uptime, 30 days100%
Latency p50620 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "booking": {
      "type": "http",
      "url": "https://gaplessly.com/api/mcp"
    }
  }
}
claude mcp add --transport http booking https://gaplessly.com/api/mcp
[mcp_servers.booking]
url = "https://gaplessly.com/api/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "booking": {
      "type": "remote",
      "url": "https://gaplessly.com/api/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "booking": {
      "type": "http",
      "url": "https://gaplessly.com/api/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=booking&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZ2FwbGVzc2x5LmNvbS9hcGkvbWNwIn0%3D"
}
{
  "servers": {
    "booking": {
      "type": "http",
      "url": "https://gaplessly.com/api/mcp"
    }
  }
}
{
  "mcpServers": {
    "booking": {
      "httpUrl": "https://gaplessly.com/api/mcp"
    }
  }
}
extensions:
  "booking":
    enabled: true
    name: "booking"
    type: streamable_http
    uri: "https://gaplessly.com/api/mcp"
    timeout: 300

Quality 90 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations5 of 5 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 1,897 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes7 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

5 tools, about 1,897 tokens to load them all · tool set 333769a838cc · tools last changed 2026-10-05 · checked 2026-10-20 02:33 UTC

Tool changes

  • book_appointmentremoved

    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.

  • book_tableremoved

    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.

  • start_table_bookingadded

    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.

  • start_appointment_bookingadded

    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.

  • find_table_timeschangedinput schema
  • find_appointment_timeschangedinput schema
  • get_venuechangedinput schema

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-15d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://gaplessly.com/api/mcp streamable-httpnoneyes100%620 ms2026-07-282026-10-20

Tools (5)

find_appointment_timesread-onlyFree 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.
find_table_timesread-onlyFree 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.
get_venueread-onlyRead 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.
start_appointment_bookingread-onlyTurn 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.
start_table_bookingread-onlyTurn 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.gaplessly/booking",
  "icons": [
    {
      "src": "https://gaplessly.com/icon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    },
    {
      "src": "https://gaplessly.com/icons/icon-512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "Gaplessly Booking",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://gaplessly.com/api/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.1.0",
  "websiteUrl": "https://gaplessly.com/docs/mcp",
  "description": "Find free times at Gaplessly businesses on a plan with AI booking, then get a link to book."
}