Skip to main content
Glama

Start a table booking

start_table_booking
Read-onlyIdempotent

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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "slotToken": "<slotToken>",
      "partySize": "<partySize>"
    },
    "name": "start_table_booking"
  }
}

Input Schema

NameRequiredDescriptionDefault
slugNoThe venue's booking slug, exactly as find_venues or get_venue returned it or as it appears in the venue's own booking link: the last path segment of gaplessly.com/book/<slug>, or the first label of <slug>.gaplessly.com. Not the business name; use find_venues to turn a name into a slug.
venueNoAlias of `slug`, kept for existing clients. Send `slug`.
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / slug
      Added value: +{
      +  "description": "The venue's booking slug, exactly as find_venues or get_venue returned it or as it appears in the venue's own booking link: the last path segment of gaplessly.com/book/<slug>, or the first label of <slug>.gaplessly.com. Not the business name; use find_venues to turn a name into a slug.",
      +  "type": "string"
      +}
    • changedInput schema / properties / venue / description
      Previous value: -"The 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>, or the first label of <slug>.gaplessly.com. Not the business name."New value: +"Alias of `slug`, kept for existing clients. Send `slug`."
    • changedInput schema / required
      Previous value: -[
      -  "venue",
      -  "slotToken",
      -  "partySize"
      -]New value: +[
      +  "slotToken",
      +  "partySize"
      +]
  2. Added

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description is consistent with them by explaining that nothing is written. It goes well beyond that, disclosing the ~10-minute hold that begins only when the guest opens the link, that no hold exists before opening, and that the URL is short-lived — details no annotation or schema field carries.

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?

Two short paragraphs, front-loaded with the purpose and the negative scope, then the timing mechanics. Every sentence carries a fact the agent cannot get elsewhere — nothing is restated 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 must explain the return value, and it does: a short-lived URL on the venue's own booking page with a defined hold window. For a two-required-parameter, non-mutating tool this leaves nothing an agent needs unresolved.

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, but the description adds real meaning: the returned link is pre-opened at the given party size and the exact sitting, which explains why partySize must match the find_table_times call. It doesn't discuss slug vs venue beyond what the schema already documents thoroughly.

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 gives a specific verb and resource — it converts a time returned by find_table_times into a guest-facing booking link — and explicitly negates the most likely misreading ("This does NOT book anything"). It names its upstream sibling find_table_times and distinguishes itself from start_appointment_booking by scoping to table sittings.

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?

It states the prerequisite input source (a time from find_table_times), the exact hand-off moment (give the guest the `url` promptly), and the condition the agent must communicate (the table is not theirs until they open the link). No alternative tool is left to infer.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources