Dirección y transporte
https://api.senden.mx/mcpEl transporte es Streamable HTTP. El servidor expone 12 herramientas. Los montos van en centavos. Empieza con whoami para ver tus sucursales y permisos.
Incluida en Senden Crecimiento ($2,999 MXN/mes) y Senden Cadena (cotización), con uso mensual razonable.
Autorización
OAuth 2.1 con PKCE (S256). El usuario del restaurante inicia sesión con su cuenta de Senden, con su verificación en dos pasos si la tiene, y elige los permisos y las sucursales en una pantalla de consentimiento de Senden. Puede autorizar el dueño, un administrador o un gerente; el gerente solo con sus sucursales.
Discovery
https://api.senden.mx/.well-known/oauth-authorization-server
https://api.senden.mx/.well-known/oauth-protected-resource/mcpRegistro de clientes
Se acepta un documento de metadata de cliente (CIMD) alojado en claude.ai, chatgpt.com, vscode.dev o cursor.com, o el registro dinámico. En los dos casos el cliente debe estar en una lista cerrada de apps conocidas y usar una de estas direcciones de redirección:
| App | Redirect URI |
|---|---|
| Claude | https://claude.ai/api/mcp/auth_callback |
| ChatGPT | https://chatgpt.com/connector_platform_oauth_redirect y https://chatgpt.com/connector/oauth/{id} |
| VS Code | https://vscode.dev/redirect y https://insiders.vscode.dev/redirect |
| Cursor | cursor://anysphere.cursor-mcp/oauth/callback, https://www.cursor.com/agents/mcp/oauth/callback y https://www.cursor.com/bot/mcp/oauth/callback |
| Apps en tu computadora (Claude Code, Codex, Gemini CLI, VS Code) | http://localhost o http://127.0.0.1, con la ruta /callback, /oauth/callback o /. El puerto es libre. |
Permisos (scopes)
| Scope | Qué permite |
|---|---|
menu:read | Buscar en el menú y ver un producto con sus modificadores. |
reservations:read | Consultar disponibilidad y reservaciones. |
reservations:write | Crear y cancelar reservaciones. |
orders:read | Consultar el estado de un pedido. |
orders:write | Cotizar y crear pedidos para recoger. |
reports:read | Reportes de ventas. |
offline_access | Renovar la sesión sin volver a pedir permiso. |
Herramientas
| Herramienta | Qué hace | Permiso | Tipo |
|---|---|---|---|
whoami | Tus sucursales (branchId) y los permisos de la conexión. Empieza por aquí. | Ninguno | Lectura |
get_branch | Nombre, dirección, zona horaria y horarios de la sucursal. | Ninguno | Lectura |
search_menu | Busca productos disponibles. Filtra por texto y categoría; hasta 50 por página con nextCursor. | menu:read | Lectura |
get_menu_item | Detalle de un producto con sus grupos de modificadores. | menu:read | Lectura |
check_availability | Horarios para reservar en una fecha local (YYYY-MM-DD) y un número de personas. Es orientativo. | reservations:read | Lectura |
create_reservation | Crea una reservación. Queda pendiente hasta que el restaurante la confirme. | reservations:write | Escritura |
get_reservation | Consulta una reservación creada por la misma persona desde sus apps conectadas (o por la misma llave de API). | reservations:read | Lectura |
cancel_reservation | Cancela una reservación creada por la misma persona desde sus apps conectadas (o por la misma llave de API). | reservations:write | Escritura |
quote_pickup_order | Cotiza un pedido para recoger con pago en sucursal. El servidor calcula los precios y no crea nada. | orders:write | Lectura |
create_pickup_order | Crea un pedido para recoger con pago en sucursal. El restaurante lo acepta como cualquier pedido en línea. | orders:write | Escritura |
get_order_status | Estado de un pedido creado por la misma persona desde sus apps conectadas (o por la misma llave de API), con texto para el cliente. | orders:read | Lectura |
get_sales_report | Ventas por día, producto, categoría y hora, cancelaciones y descuentos, entre dos fechas locales. Hasta 92 días. Las cifras se actualizan al abrir el dashboard del Admin, así que pueden ir atrasadas respecto al día en curso. | reports:read | Lectura |
quote_pickup_order pide orders:write aunque no crea nada. Las reservaciones nacen pendientes y los pedidos son para recoger con pago en sucursal. Las herramientas que consultan una reservación o un pedido solo ven los que creó la misma persona desde sus apps conectadas (o la misma llave de API).
Límites
- 120 consultas por minuto por conexión.
- 20 escrituras por minuto por conexión.
- Las escrituras aceptan
idempotencyKey. Manda una distinta por intento y podrás reintentar sin duplicar. - Los reportes cubren hasta 92 días por consulta.
- Uso mensual razonable. El consumo se ve en el Admin.
Ejemplos de configuración
VS Code (mcp.json)
{
"servers": {
"senden": {
"type": "http",
"url": "https://api.senden.mx/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http senden https://api.senden.mx/mcpClaude y ChatGPT
Agrega un conector nuevo y pega https://api.senden.mx/mcp. Después inicia sesión con tu cuenta de Senden.
Claude Code, Codex y Cursor
Agrega un servidor MCP por HTTP con la misma dirección.
Errores comunes
| Código | Qué pasó | Qué hacer |
|---|---|---|
| 401 | Falta el token o venció. | Reconecta la app y repite el inicio de sesión. |
402 PLAN_LIMIT_EXCEEDED | El plan no incluye la función o llegó a su límite. | Revisa que la cuenta esté en Crecimiento o Cadena y el uso del mes en el Admin. |
403 INSUFFICIENT_SCOPE | La conexión no tiene el permiso de esa herramienta. | Reconecta y marca el permiso. |
403 BRANCH_NOT_ALLOWED | La sucursal no está entre las que autorizaste. | Llama a whoami para ver las sucursales o reconecta con esa sucursal. |
| 429 | Pasaste de 120 consultas o 20 escrituras por minuto. | Espera y reintenta. Si mandas idempotencyKey, el reintento no duplica. |
¿Tu app no está en la lista?
El acceso se limita a apps conocidas. Escríbenos y la agregamos.