GoTable MCP by usefulapi
Read availability, reservations, guests; create, change, cancel bookings; add notes in GoTable.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen gotable_create_reservation_note
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"gotable": {
"url": "https://gotable.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://gotable.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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"
}Comunidad
Evidencia