{"serverId":"mcp-registry/app.g-guest/g-guest","tools":[{"name":"cancel_booking","fixed":{"name":"cancel_booking","description":"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 r","inputSchema":{"type":"object","required":["booking_id","manage_token"],"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)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":244,"tokensAfter":244},{"name":"check_availability","fixed":{"name":"check_availability","description":"List bookable time slots for a business on a given date and party size. Offer the guest only slots where available is true.","inputSchema":{"type":"object","required":["slug","date","party_size"],"properties":{"date":{"type":"string","description":"YYYY-MM-DD, in the venue's local calendar."},"slug":{"type":"string"},"party_size":{"type":"integer","minimum":1}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"check_booking","fixed":{"name":"check_booking","description":"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, pending_payment (with payment_url while it can be paid), cancelled, or for past bookings completed or n","inputSchema":{"type":"object","required":["booking_id","manage_token"],"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":257,"tokensAfter":257},{"name":"create_booking","fixed":{"name":"create_booking","description":"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. If it is pending_payment, the venue takes a prepayment: show the guest the payment_url, and do not say it is booked until it is paid.","inputSchema":{"type":"object","required":["slug","start","party_size","name","email","phone"],"properties":{"name":{"type":"string"},"slug":{"type":"string"},"email":{"type":"string"},"notes":{"type":"string"},"phone":{"type":"string"},"start":{"type":"string","description":"The slot's `start` value, copied exactly as check_availability returned it."},"source":{"enum":["chatgpt","hermes","other_ai","proof_video"],"type":"string","description":"Which assistant is booking. Defaults to other_ai. proof_video is our own channel: bookings made while filming a proof clip."},"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."},"party_size":{"type":"integer","minimum":1},"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."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":405,"tokensAfter":405},{"name":"fetch","fixed":{"name":"fetch","description":"Fetch full details for one business id returned by search: services, hours, timezone and how to book it.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63},{"name":"get_business","fixed":{"name":"get_business","description":"Look up a business on G-Guest: services, opening hours, timezone and maximum party size. Call this first if you only know the slug.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string","description":"Business identifier, e.g. \"demo\"."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88},{"name":"request_listing","fixed":{"name":"request_listing","description":"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","inputSchema":{"type":"object","required":["business_name","city","business_type","contact_email"],"properties":{"city":{"type":"string","description":"City and country, e.g. \"Canggu, Indonesia\"."},"message":{"type":"string","description":"Anything the owner wants the team to know: languages, seats, how bookings are taken today. Up to 500 characters."},"website":{"type":"string","description":"The business website or Instagram page, if it has one."},"contact_name":{"type":"string","description":"Who asked, so the reply can address them by name."},"business_name":{"type":"string","description":"The business's own name, as its owner writes it."},"business_type":{"enum":["restaurant","cafe","bar","salon","barbershop","spa","studio","clinic","other"],"type":"string","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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":433,"tokensAfter":433},{"name":"search","fixed":{"name":"search","description":"Search bookable businesses on G-Guest by name or slug. Returns ids you can pass to fetch or to the booking tools.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67}],"toolsChanged":8,"tokensSaved":0,"todo":[{"tool":"check_availability","params":["slug","party_size"]},{"tool":"create_booking","params":["name","slug","email","notes","phone","party_size"]},{"tool":"fetch","params":["id"]},{"tool":"search","params":["query"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}