g-guest

Book a table, appointment or class at a real local business. Instant confirmation, no API key.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
92%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,388Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (1.08% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "g-guest": {
      "url": "https://g-guest.app/api/mcp"
    }
  }
}

Remote endpoints

https://g-guest.app/api/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search(query)

Search bookable businesses on G-Guest by name or slug. Returns ids you can pass to fetch or to the booking tools.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    }
  },
  "required": [
    "query"
  ]
}
🟢fetch(id)

Fetch full details for one business id returned by search: services, hours, timezone and how to book it.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟢get_business(slug)

Look up a business on G-Guest: services, opening hours, timezone and maximum party size. Call this first if you only know the slug.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Business identifier, e.g. \"demo\"."
    }
  },
  "required": [
    "slug"
  ]
}
🟢check_availability(slug, date, party_size)

List bookable time slots for a business on a given date and party size. Offer the guest only slots where available is true.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "date": {
      "type": "string",
      "description": "YYYY-MM-DD, in the venue's local calendar."
    },
    "party_size": {
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "slug",
    "date",
    "party_size"
  ]
}
🟡create_booking(slug, start, party_size, name, email, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "start": {
      "type": "string",
      "description": "The slot's `start` value, copied exactly as check_availability returned it."
    },
    "party_size": {
      "type": "integer",
      "minimum": 1
    },
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "notes": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "description": "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."
    },
    "language": {
      "type": "string",
      "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."
    },
    "source": {
      "type": "string",
      "enum": [
        "chatgpt",
        "hermes",
        "other_ai",
        "proof_video"
      ],
      "description": "Which assistant is booking. Defaults to other_ai. proof_video is our own channel: bookings made while filming a proof clip."
    }
  },
  "required": [
    "slug",
    "start",
    "party_size",
    "name",
    "email",
    "phone"
  ]
}
🟡check_booking(booking_id, manage_token)

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/<booking_id>?token=<manage_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.

Input Schema

{
  "type": "object",
  "properties": {
    "booking_id": {
      "type": "string",
      "description": "The booking_id create_booking returned, or the id in the guest's manage link."
    },
    "manage_token": {
      "type": "string",
      "description": "The token from the same booking's manage link. If the guest only has the link, take the token from its ?token= parameter."
    }
  },
  "required": [
    "booking_id",
    "manage_token"
  ]
}
🔴cancel_booking(booking_id, manage_token)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "booking_id": {
      "type": "string",
      "description": "The booking_id create_booking returned, or the id in the guest's manage link."
    },
    "manage_token": {
      "type": "string",
      "description": "The token from the same booking's manage link (its ?token= parameter)."
    }
  },
  "required": [
    "booking_id",
    "manage_token"
  ]
}
🟡request_listing(business_name, city, business_type, contact_email, contact_phone, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "business_name": {
      "type": "string",
      "description": "The business's own name, as its owner writes it."
    },
    "city": {
      "type": "string",
      "description": "City and country, e.g. \"Canggu, Indonesia\"."
    },
    "business_type": {
      "type": "string",
      "enum": [
        "restaurant",
        "cafe",
        "bar",
        "salon",
        "barbershop",
        "spa",
        "studio",
        "clinic",
        "other"
      ],
      "description": "The closest category."
    },
    "contact_email": {
      "type": "string",
      "description": "Email of the owner or manager who asked. The reply goes here."
    },
    "contact_phone": {
      "type": "string",
      "description": "Phone with country code, optional."
    },
    "contact_name": {
      "type": "string",
      "description": "Who asked, so the reply can address them by name."
    },
    "website": {
      "type": "string",
      "description": "The business website or Instagram page, if it has one."
    },
    "message": {
      "type": "string",
      "description": "Anything the owner wants the team to know: languages, seats, how bookings are taken today. Up to 500 characters."
    }
  },
  "required": [
    "business_name",
    "city",
    "business_type",
    "contact_email"
  ]
}

Recommended Prompts

search_research
Search for information about [topic] using g-guest
Expected tools: search
find_specific
Find [specific item] using g-guest
Expected tools: search
retrieve_data
Get details about [item] from g-guest
Expected tools: fetch
fetch_info
Fetch [information type] using g-guest
Expected tools: fetch
list_items
List all [items] available in g-guest
Expected tools: request_listing

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools