G-Guest MCP server
This server lets an AI assistant find real local businesses and make, check, or cancel real confirmed bookings on G-Guest, with no API key or account.
Search businesses by name or slug (
search), or look one up directly by slug (get_business).Fetch full business details: services, opening hours, timezone, how to book, and maximum party size (
fetch).Check real availability for a date and party size, returning bookable slots (
check_availability).Create real reservations with the guest's name, email, phone, chosen slot, optional notes, language, and retry-safe idempotency key (
create_booking).Confirm bookings with the guest using booking ID and manage token, returning status and details without exposing personal data (
check_booking).Cancel upcoming bookings and release the slot; safe to retry, but cannot undo (
cancel_booking).Request a new business listing for a restaurant, cafe, salon, studio, etc., as a lead for the G-Guest team (
request_listing).Localized guest experience: confirmations, reminders, and manage pages can be sent in en, nl, de, fr, es, it, id, or bg.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@G-Guest MCP serverFind a table for two at an Italian restaurant tonight"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
G-Guest MCP server
Book a table, an appointment or a place in a class at a real local business, from an AI assistant, with no API key and no account.
G-Guest is the booking system those businesses run on. This server exposes it to assistants over MCP: find a venue, read its real availability, and create a booking that is confirmed instantly and appears in the venue's own panel.
Endpoint · https://g-guest.app/api/mcp
Transport · streamable HTTP (JSON-RPC 2.0 over POST)
Auth · none. Reading and booking are open; a booking must carry the guest's
name, phone and email.
Tools
Tool | What it does |
| Find bookable businesses by name or slug |
| Full details for one business: services, hours, how to book |
| The same card, by slug |
| Real bookable slots for a date and party size |
| A real, confirmed reservation |
Exact schemas: tools.json, generated from the live endpoint,
not written by hand.
Related MCP server: Odybook MCP Server
Guest languages
The booking page, the confirmation, the reminders and the manage page speak the guest's language. Pass it on create_booking as language (ISO 639-1): en, nl, de, fr, es, it, id or bg. Defaults to English. The venue's own words (its name, dishes, class names) are never translated.
Two ways to connect
By URL, if your client speaks streamable HTTP. Point it at
https://g-guest.app/api/mcp. Nothing to install.
By command, if your client expects a local stdio server, which is what Claude Desktop and Cursor configs usually want:
{
"mcpServers": {
"g-guest": {
"command": "npx",
"args": ["-y", "g-guest-mcp"]
}
}
}That command runs the small proxy in this repository. It forwards every call to
the hosted endpoint and hands the answer back unchanged: no booking logic runs
on your machine, and no key is needed. GGUEST_MCP_URL overrides the endpoint
if you are pointing at something else.
The tool list is not written into the proxy. It asks the live server for it at
start-up, so the wrapper cannot fall behind the service; with no network it
falls back to the tools.json in this repository, which is generated from that
same endpoint.
Try it without installing anything
curl -s -X POST https://g-guest.app/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'A live demo venue is demo-studio (a pilates studio) and demo (a restaurant).
Booking against those is real but harmless: they are ours.
Adding it to an assistant
Claude, Codex, and custom agents: point them at the endpoint. Nothing to install.
ChatGPT: add it as a connector (developer mode). Step-by-step, with what we have actually tested and what we have not: https://g-guest.app/ai
Honesty about what this is
Every venue reachable here is a paying or trialling customer of G-Guest, and a booking made through this server is a real reservation that a real business will honour. There is no marketplace in the middle and no commission on the booking.
We list only what we have tested ourselves. https://g-guest.app/ai says which
assistants have actually created a confirmed booking here, and on what date.
Where the code lives
The booking engine is not here and never will be. Availability, slot arithmetic, the guest list, everything that decides whether a table can be sold: that lives inside the G-Guest application and stays there.
What this repository does hold is the stdio proxy in src/, about a hundred
lines whose entire job is to pass JSON-RPC through and return the reply as it
came. It exists because a good half of the clients and directories expect a
command to run rather than a URL to call, and because a sandbox has to be able
to build and introspect the server without reaching our infrastructure.
tools.json is regenerated from the live endpoint. If the two ever disagree,
the live endpoint is right.
Links
Service manifest · https://g-guest.app/.well-known/g-guest.json
OpenAPI (plain HTTP, for agents without MCP) · https://g-guest.app/openapi.json
What works today, per assistant · https://g-guest.app/ai
G-Guest · https://g-guest.app
Made by G-Lab Studio.
Available Tools
8 toolscancel_bookingAInspect
Cancel an upcoming booking and release its slot to other guests. Identified like check_booking: booking_id plus manage_token. Confirm with the guest before calling; the cancellation is immediate and this server cannot undo it, the guest would simply book again. The venue is notified exactly as for a cancellation from the manage link. Safe to retry: cancelling a booking that is already cancelled returns the same result, not an error. A booking whose start time has passed cannot be cancelled and returns an error saying so. To move a booking to another time, cancel it and create a new one.
| Name | Required | Description | Default |
|---|---|---|---|
| booking_id | Yes | The booking_id create_booking returned, or the id in the guest's manage link. | |
| manage_token | Yes | The token from the same booking's manage link (its ?token= parameter). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full disclosure burden and does so excellently. It reveals that cancellation is immediate, irreversible (the server cannot undo it), notifies the venue exactly as a manage-link cancellation would, is safe to retry (idempotent — cancelling an already-cancelled booking returns the same result rather than an error), and returns an error for bookings whose start time has passed. This is precisely the behavioral context an agent needs for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average, but every sentence earns its place: purpose, identification, guest-confirmation requirement, irreversibility, retry safety, error condition, and rescheduling workflow. Information is front-loaded (purpose first) and densely packed without redundancy. For a destructive tool with no annotations, this length is justified, not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no annotations and no output schema, the description is remarkably complete: it covers the action, parameter derivation, failure modes, retry semantics, irreversibility, and the rescheduling path. The only gap is that it never describes the return value or success response format, which is somewhat expected given the absence of an output schema. An agent has everything necessary to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; both booking_id and manage_token are already documented in the schema, including their provenance from create_booking or the guest's manage link. The description adds only the framing that the pair identifies the booking 'like check_booking,' which marginally reinforces that both are required together but adds little beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Cancel an upcoming booking and release its slot to other guests.' This states not just the action but its consequence, making it immediately distinguishable from siblings like check_booking, create_booking, and check_availability. No ambiguity about what operation is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('Confirm with the guest before calling'), an explicit when-not condition (bookings whose start time has passed cannot be cancelled), and an explicit alternative for a related scenario ('To move a booking to another time, cancel it and create a new one'). It also signals the retry posture. It slightly misses an explicit statement of when to prefer sibling tools like check_booking first, but the key routing is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_availabilityBInspect
List bookable time slots for a business on a given date and party size. Offer the guest only slots where available is true.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | YYYY-MM-DD, in the venue's local calendar. | |
| slug | Yes | ||
| party_size | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It reveals that returned slots may vary in availability and instructs the agent to surface only those with available: true, and 'List' conveys a read-only operation. However, it omits return format, ordering, timezone handling, and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the tool's core purpose. The second sentence adds actionable filtering guidance, though it is slightly customer-facing rather than a pure API behavior note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter list operation with no output schema, the description gives a basic but incomplete picture. It fails to explain the slug parameter or describe the slot response fields beyond the available flag, leaving an agent to guess at the output shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description should compensate, but it mostly restates date and party_size without adding meaning. The slug parameter is entirely unexplained, and party_size gets no semantics beyond the schema's minimum of 1.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('bookable time slots for a business') and names the two key inputs, date and party size. It doesn't explicitly contrast with siblings like create_booking or search, but the function is unambiguous from the wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies an availability-checking use case but provides no explicit when-to-use guidance, no exclusions, and does not route the agent away from related tools such as search, get_business, or create_booking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_bookingAInspect
Look up one existing booking so the guest can confirm when and where it is. Identify it with the booking_id and manage_token that create_booking returned; both also sit in the guest's confirmation email as the manage link, /booking/?token=. Returns the business, the local date and time with its timezone, party size, service and status: confirmed, pending_confirmation, cancelled, or for past bookings completed or no_show. Never returns the guest's name, email or phone. A wrong or missing token is refused without revealing whether the booking exists.
| Name | Required | Description | Default |
|---|---|---|---|
| booking_id | Yes | The booking_id create_booking returned, or the id in the guest's manage link. | |
| manage_token | Yes | The token from the same booking's manage link. If the guest only has the link, take the token from its ?token= parameter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It discloses many important traits: it returns specific fields, never returns guest PII, and refuses wrong or missing tokens without revealing whether a booking exists. This gives the agent strong expectations about privacy and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and each sentence earns its place: purpose, parameter source, return contents, and security behavior. It is front-loaded with the main action and avoids redundant restatement of the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a lookup tool with no output schema, the description fully covers behavior, return fields, status values, parameter provenance, and error handling. Nothing essential is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters thoroughly. The description adds extra value by explaining that both parameters come from create_booking and are embedded in the guest's manage link, including the exact URL shape and how to extract the token from it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Look up one existing booking' and names the concrete purpose. It naturally distinguishes itself from siblings like check_availability and create_booking by focusing on retrieving an existing booking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool when a guest needs to confirm an existing booking, and identifies the required credentials from create_booking or the confirmation email. It does not explicitly enumerate when not to use it or name alternative tools, but the conditions are unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bookingAInspect
Create a real reservation. Use a start value returned by check_availability. Never invent guest details. Ask the person for their real name, email and phone first. If the result status is pending_confirmation, show the guest the confirmation_url.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| slug | Yes | ||
| Yes | |||
| notes | No | ||
| phone | Yes | ||
| start | Yes | The slot's `start` value, copied exactly as check_availability returned it. | |
| source | No | Which assistant is booking. Defaults to other_ai. proof_video is our own channel: bookings made while filming a proof clip. | |
| language | No | The guest's language as an ISO 639-1 code: en, nl, de, fr, es, it, id or bg. The confirmation, the reminders and the manage page are sent in it. Defaults to English. | |
| party_size | Yes | ||
| idempotency_key | No | Retry safety: pick any unique string for this booking attempt and reuse it on retries. The same key always returns the same booking, never a duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does so well: it flags that this creates a real reservation, a consequential irreversible side effect, and forbids fabricating guest data. It also reveals response behavior — the pending_confirmation status and confirmation_url field — which an agent needs to act correctly on the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place: purpose, prerequisite, data-integrity rule, and post-call handling. The core operating constraints ('real reservation', 'never invent guest details') are front-loaded ahead of workflow details, with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-param mutation tool with no annotations and no output schema, the description covers the full call sequence: obtaining a valid start, collecting honest guest data, creating the booking, and reacting to the pending_confirmation result. The only notable gap is the lack of guidance for other possible result statuses or failure handling, which is a minor omission given the overall clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, and the description compensates where it matters most: start must come verbatim from check_availability, and name/email/phone must be real details supplied by the person rather than invented. It leaves party_size, slug, and notes semantically uncovered, but the riskiest hallucination-prone fields are addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a real reservation') up front, and the qualifier 'real' signals live side effects. The verb set clearly differentiates it from siblings such as cancel_booking, check_booking, and check_availability without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to check_availability as the required source of the start value, establishing a clear precondition and naming the sibling to call first. It also sequences the workflow — ask the guest for real name/email/phone before calling — and specifies how to handle the pending_confirmation response. It stops short of a full when-not-to-use inventory, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchAInspect
Fetch full details for one business id returned by search: services, hours, timezone and how to book it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It indicates a read-only retrieval operation by saying 'Fetch full details' and lists output content, but it does not mention error behavior, required permissions, or whether the response is complete or paginated. This is adequate for a simple lookup but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action, resource, and key output categories. There is no filler or redundant content, and it remains highly readable despite packing in the input constraint and return scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers the input source (search result) and the output facets (services, hours, timezone, booking). However, it does not address the existence of get_business, which is a likely alternative, nor does it explain when to use one over the other. Without an output schema or more detail, the description is adequate but leaves a notable gap in tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'id' as a string with no description, leaving 0% schema coverage. The description compensates by specifying that the id is a 'business id returned by search', which tells the agent both the semantic meaning of the parameter and its expected provenance. This is useful context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Fetch full details') and resource ('one business id'), and enumerates the returned information: services, hours, timezone, and booking. It is clear about what the tool does, but it does not differentiate from the sibling get_business, which likely overlaps in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'returned by search' implies the tool should be used with a business id obtained from the search tool, giving some usage context. However, no explicit exclusions or comparisons are provided against get_business, check_availability, or create_booking, so the agent must infer when this is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_businessAInspect
Look up a business on G-Guest: services, opening hours, timezone and maximum party size. Call this first if you only know the slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Business identifier, e.g. "demo". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly indicates this is a lookup operation and lists what data is retrieved, but it does not explicitly state that it has no side effects or that it is read-only. For a simple lookup this is adequate, though not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The main purpose and return scope are front-loaded, and the usage hint is appended concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with no output schema, the description covers purpose, returned fields, and when to call it. It lacks an explicit fallback instruction for when the slug is not known, but the guidance is otherwise sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the slug parameter already has a clear description with an example. The tool description adds little 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up'), names the resource ('a business on G-Guest'), and spells out the key data returned (services, opening hours, timezone, maximum party size). It also differentiates from siblings by positioning itself as the lookup to call when you only know the slug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Call this first if you only know the slug' tells the agent when this tool is the entry point. It does not explicitly name alternatives like search for when the slug is unknown, so it falls just short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_listingAInspect
Ask G-Guest to list a business that is not on it yet. Use it when the person you are helping runs a restaurant, cafe, bar, salon, spa, studio or clinic and wants reservations that assistants can make. Nothing is published by this call: the request reaches the G-Guest team as a lead, a person reviews it and contacts the business, and only then is anything set up. The owner's or manager's email is required, because the reply comes by email; a phone is optional extra. Do not call it for a guest who merely wants to book somewhere, and never submit a business without its owner's or manager's say-so. Returns a receipt with a reference id; no timeline is promised.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City and country, e.g. "Canggu, Indonesia". | |
| message | No | Anything the owner wants the team to know: languages, seats, how bookings are taken today. Up to 500 characters. | |
| website | No | The business website or Instagram page, if it has one. | |
| contact_name | No | Who asked, so the reply can address them by name. | |
| business_name | Yes | The business's own name, as its owner writes it. | |
| business_type | Yes | The closest category. | |
| contact_email | Yes | Email of the owner or manager who asked. The reply goes here. | |
| contact_phone | No | Phone with country code, optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden, and it does so exceptionally. It discloses that nothing is published immediately, the request becomes a lead, a human reviews and contacts the business, and only then is anything set up. It also explains the async nature, email dependency, and that no timeline is promised.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense, with the purpose front-loaded and every sentence contributing new information. It covers what, when, how, not-when, authorization, and return value without any fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no annotations or output schema, the description covers the tool's purpose, usage conditions, async side effects, required contact method, authorization constraint, and return value (receipt with reference id). It also sets expectations about the lack of a timeline, making it effectively complete for a lead-submission tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds useful meaning by explaining why contact_email is required ("the reply comes by email") and that contact_phone is optional. This helps an agent understand the intent behind the required and optional parameters beyond raw schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Ask G-Guest to list a business that is not on it yet." This clearly distinguishes it from sibling booking and query tools, and the following sentence names the exact business types (restaurant, cafe, bar, salon, spa, studio, clinic) it applies to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: when a business owner wants reservations that assistants can make. It also gives strong negative guidance: "Do not call it for a guest who merely wants to book somewhere, and never submit a business without its owner's or manager's say-so." This makes the trigger conditions and exclusions unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchAInspect
Search bookable businesses on G-Guest by name or slug. Returns ids you can pass to fetch or to the booking tools.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses the core behavior—searching only bookable businesses by name/slug and returning IDs—but does not mention result limits, ordering, exact/partial matching, or failure behavior. It is not misleading but leaves some behavioral unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one efficient sentence that front-loads the action and resource, then adds the return contract and downstream usage. No filler; every clause contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter search tool with no output schema, the description covers the input semantics, the scope, and the output in sufficient detail for an agent to call it and connect results to fetch or booking tools. Additional details like pagination or empty-result handling would be helpful but are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines a 'query' string with no description. The description adds critical meaning: the query should be a business name or slug, and the search is limited to bookable businesses. This compensates for the 0% schema coverage, though format details (case sensitivity, partial matches) are absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Search'), identifies the resource ('bookable businesses on G-Guest'), and states the query method ('by name or slug'). It also explains the return value ('ids'), which clearly separates it from sibling tools like fetch and get_business that presumably operate on already-known IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool returns IDs usable with fetch or booking tools, giving an implicit usage path for when search is the appropriate first step. It does not explicitly state exclusions (e.g., use fetch when you already have an ID), so it stops short of full routing guidance.
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 tool update
v1.1.0- Changed
create_booking1 field changed- changed
Input schema / properties / idempotency_key / descriptionPrevious value: -"Retry safety: pick any unique string for this booking attempt and reuse it on retries — the same key always returns the same booking, never a duplicate."New value: +"Retry safety: pick any unique string for this booking attempt and reuse it on retries. The same key always returns the same booking, never a duplicate."
4 tool updates
v1.0.2- Added
cancel_booking - Added
check_booking - Changed
create_booking1 field changed- added
Input schema / properties / languageAdded value: +{ + "description": "The guest's language as an ISO 639-1 code: en, nl, de, fr, es, it, id or bg. The confirmation, the reminders and the manage page are sent in it. Defaults to English.", + "type": "string" +}
- Added
request_listing
5 tool updates
v1.0.0- First observed
check_availability - First observed
create_booking - First observed
fetch - First observed
get_business - First observed
search
TDQS
Scored across 8 tools
Most tools map cleanly to distinct operations—availability, existing booking lookup, cancellation, business discovery, and onboarding. The only real ambiguity is between fetch and get_business, which both return business details and are differentiated mainly by id versus slug.
create_booking, cancel_booking, check_availability, check_booking, get_business, and request_listing follow a clear verb_noun pattern. fetch and search are bare verbs, so two tools break the pattern, but overall the naming is still readable and predictable.
8 tools is well-scoped for a booking assistant: discovery, availability, booking lifecycle, and onboarding each have coverage. No tool feels redundant or superfluous.
The booking lifecycle is covered end-to-end via availability, create, check, and cancel, with moving a booking explicitly handled by cancel-and-recreate. Business discovery and listing-request flows are present, though there is no in-server update or confirmation action; the confirmation_url is delegated to the guest, so minor gaps remain.
Maintenance
Related MCP Connectors
Verified local businesses, bookable by AI agents: services, prices, availability and appointments.
Discover and book businesses via AI agents.
Booking gateway for AI agents — discover events, movies & hotels, hand off to partner checkout.
Discover, read and book verified real-world businesses through one endpoint.
Related MCP Servers
AlicenseAqualityCmaintenanceEnables AI assistants to discover and book local service businesses like barbers, plumbers, and mechanics directly through MCP-compatible tools.941 npmMIT
Odybook MCP Serverofficial
FlicenseAqualityDmaintenanceEnables AI assistants to search tours, check availability, and manage bookings via Odybook's experience management platform.3-
Dida Hotel MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to search and book hotels globally with real-time pricing and inventory from over 2 million properties.81MIT- AlicenseAqualityCmaintenanceEnables AI agents to search restaurants, check availability, and book reservations on OpenTable, including managing booking history and handling multi-factor authentication.948 npmMIT