GoTable MCP by usefulapi
Read availability, reservations, guests; create, change, cancel bookings; add notes in GoTable.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (1)
- LOWin gotable_create_reservation_note
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"gotable": {
"url": "https://gotable.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://gotable.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (21)
🟢gotable_list_restaurants(page, per_page)
List the restaurants this API key can access (id, name, address, time zone, currency). Call this first: every other tool needs a restaurant_id. GoTable API: GET /api/v1/restaurants.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_restaurant(restaurant_id)
Get one restaurant by id. GoTable API: GET /api/v1/restaurants/{restaurant_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_accounts(restaurant_id, page, per_page)
List the staff accounts that have access to a restaurant (id, name, e-mail). The account id is the author_id that gotable_create_reservation_note needs. GoTable API: GET /api/v1/restaurants/{restaurant_id}/accounts.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_availability(restaurant_id, from, till)
Get the real-time availability of a restaurant per date: closed flag and the time slots with the minimum and maximum party size. The range is capped at 3 months after `from`. GoTable API: GET /api/v1/restaurants/{restaurant_id}/availability.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"from": {
"description": "Start date yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"till": {
"description": "End date yyyy-mm-dd (max 3 months after from).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_offer_availability(restaurant_id, offer_id, from, till)
Get the availability per date of one offer (for example a tasting menu). GoTable API: GET /api/v1/restaurants/{restaurant_id}/offers/{offer_id}/availability.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"offer_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Offer id (from gotable_list_offers)."
},
"from": {
"description": "Start date yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"till": {
"description": "End date yyyy-mm-dd (max 3 months after from).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"restaurant_id",
"offer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_offers(restaurant_id, page, per_page)
List the offers of a restaurant (deposit per guest, visibility, booking window, translations). GoTable API: GET /api/v1/restaurants/{restaurant_id}/offers.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_offer(restaurant_id, offer_id)
Get one offer by id. GoTable API: GET /api/v1/restaurants/{restaurant_id}/offers/{offer_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"offer_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Offer id."
}
},
"required": [
"restaurant_id",
"offer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_reservations(restaurant_id, query, page, per_page)
Search the reservations of a restaurant. `query` mixes free text with filters: fields type, offer_id, date, time, starts_at, ends_at, state, party_size, guest_name, guest_email, guest_telephone, comments, duration_in_minutes; operators <= < >= > != = == : ~ !: !~. Example: "John date>=2026-10-19 state=confirmed party_size=2". States: pending, rejected, confirmed, checked_in, checked_out, cancelled, expired, reconfirmed, skipped and others. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reservations.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"query": {
"description": "Free text and filters, see the tool description.",
"type": "string"
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_reservation(restaurant_id, reservation_id)
Get one reservation with state, guest data, tables, payment and notes. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_reservation_notes(restaurant_id, reservation_id)
List the internal notes of a reservation. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}/notes.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_guests(restaurant_id, query, page, per_page)
Search the guests of a restaurant. `query` mixes free text with filters: fields name, email, telephone, last_visit, visits, reservations; operators <= < >= > != = == : ~ !: !~. Example: "visits>=5". GoTable API: GET /api/v1/restaurants/{restaurant_id}/guests.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"query": {
"description": "Free text and filters, see the tool description.",
"type": "string"
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_get_guest(restaurant_id, guest_id)
Get one guest with visits, last visit, diets, allergies and tags. GoTable API: GET /api/v1/restaurants/{restaurant_id}/guests/{guest_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"guest_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Guest id."
}
},
"required": [
"restaurant_id",
"guest_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_tables(restaurant_id, page, per_page)
List the tables of a restaurant (label, section, minimum and maximum party size). GoTable API: GET /api/v1/restaurants/{restaurant_id}/tables.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_combinations(restaurant_id, page, per_page)
List the table combinations of a restaurant (groups of tables that seat one larger party). GoTable API: GET /api/v1/restaurants/{restaurant_id}/combinations.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gotable_list_reviews(restaurant_id, page, per_page)
List the guest reviews of a restaurant (rating, text, state). Needs the `reviews` feature in the GoTable plan; else the API returns an error. GoTable API: GET /api/v1/restaurants/{restaurant_id}/reviews.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"page": {
"description": "Page number (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"restaurant_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_create_reservation(restaurant_id, party_size, date, time, type, ...)
WRITE: create a reservation as the restaurant (skips most availability checks, so check gotable_get_availability first). Needs date and time, or type WalkIn for a guest at the door. By default GoTable e-mails and texts the guest: set skip_email / skip_sms to stop that. Not idempotent: a repeat call creates a second reservation. GoTable API: POST /api/v1/restaurants/{restaurant_id}/reservations.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"party_size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Number of guests."
},
"date": {
"description": "Date yyyy-mm-dd (required unless type is WalkIn).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"time": {
"description": "Time HH:MM (required unless type is WalkIn).",
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"type": {
"description": "WalkIn = guest at the door; date and time default to now.",
"type": "string",
"enum": [
"Reservation",
"WalkIn"
]
},
"offer_id": {
"description": "Offer to book (from gotable_list_offers).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"guest_name": {
"type": "string"
},
"guest_email": {
"type": "string"
},
"guest_telephone": {
"description": "International format, e.g. +31612345678.",
"type": "string"
},
"comments": {
"description": "Guest comments, e.g. a diet.",
"type": "string"
},
"duration_in_minutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"table_ids": {
"description": "Tables to assign (from gotable_list_tables).",
"type": "array",
"items": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"table_lock": {
"description": "true = pin the tables, no auto-assignment.",
"type": "boolean"
},
"skip_email": {
"description": "true = do not send the e-mail to the guest.",
"type": "boolean"
},
"skip_sms": {
"description": "true = do not send the text message to the guest.",
"type": "boolean"
}
},
"required": [
"restaurant_id",
"party_size"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_update_reservation(restaurant_id, reservation_id, date, time, party_size, ...)
WRITE: change the details of a reservation (date, time, party size, guest data, comments, duration, tables). Send only the fields to change. GoTable API: PUT /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"party_size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"guest_name": {
"type": "string"
},
"guest_email": {
"type": "string"
},
"guest_telephone": {
"type": "string"
},
"comments": {
"type": "string"
},
"duration_in_minutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"table_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"table_lock": {
"type": "boolean"
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_cancel_reservation(restaurant_id, reservation_id, skip_email, skip_sms)
WRITE: cancel a reservation as the restaurant. By default GoTable e-mails and texts the guest: set skip_email / skip_sms to stop that. GoTable API: POST /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}/cancel.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
},
"skip_email": {
"description": "true = do not send the e-mail to the guest.",
"type": "boolean"
},
"skip_sms": {
"description": "true = do not send the text message to the guest.",
"type": "boolean"
}
},
"required": [
"restaurant_id",
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_create_reservation_note(restaurant_id, reservation_id, content, author_id)
WRITE: add an internal note to a reservation. author_id is a staff account id (from gotable_list_accounts). Not idempotent. GoTable API: POST /api/v1/restaurants/{restaurant_id}/reservations/{reservation_id}/notes.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"reservation_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Reservation id."
},
"content": {
"type": "string",
"minLength": 1,
"description": "Note text."
},
"author_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Staff account id (from gotable_list_accounts)."
}
},
"required": [
"restaurant_id",
"reservation_id",
"content",
"author_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gotable_create_guest(restaurant_id, name, email, telephone, subscribed)
WRITE: add a guest to the guest book of a restaurant. Not idempotent. GoTable API: POST /api/v1/restaurants/{restaurant_id}/guests.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Guest name."
},
"email": {
"type": "string"
},
"telephone": {
"type": "string"
},
"subscribed": {
"description": "true = the guest accepts marketing e-mail.",
"type": "boolean"
}
},
"required": [
"restaurant_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡gotable_update_guest(restaurant_id, guest_id, name, email, telephone, ...)
WRITE: change the name, e-mail, telephone or marketing consent of a guest. Send only the fields to change. GoTable API: PATCH /api/v1/restaurants/{restaurant_id}/guests/{guest_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"restaurant_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Restaurant id (from gotable_list_restaurants)."
},
"guest_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Guest id."
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"telephone": {
"type": "string"
},
"subscribed": {
"type": "boolean"
}
},
"required": [
"restaurant_id",
"guest_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis