Servidor MCP de Zentix
Conecta tu cuenta de Zentix a Claude, ChatGPT, Cursor, Hermes o tu propio agente y opera
CRM, reuniones, enlaces de pago, agentes IA y métricas por lenguaje natural — sin escribir código contra la API.
Endpoint:
Connect your Zentix account to Claude, ChatGPT, Cursor, Hermes or your own agent and operate
CRM, meetings, payment links, AI agents and metrics in natural language — without writing code against the API.
Endpoint:
https://app.zentixchatbot.cloud/api/mcp
1 Qué es el servidor MCPWhat the MCP server is
MCP (Model Context Protocol) es el estándar abierto con el que Claude, ChatGPT, Cursor y otros asistentes conectan herramientas externas. El servidor MCP de Zentix expone tu cuenta como herramientas seguras: tu asistente puede consultar contactos, conversaciones y tratos del CRM, revisar escalaciones y seguimientos, leer la agenda y tus agentes IA, consultar métricas, crear enlaces de pago y agendar reuniones — siempre con tu permiso y con recibo verificable. MCP (Model Context Protocol) is the open standard Claude, ChatGPT, Cursor and other assistants use to connect external tools. The Zentix MCP server exposes your account as safe tools: your assistant can query CRM contacts, conversations and deals, review escalations and follow-ups, read your agenda and AI agents, pull metrics, create payment links and book meetings — always with your permission and a verifiable receipt.
- Multi-cliente: funciona con cualquier cliente MCP (Claude Desktop, ChatGPT connectors, Cursor, Hermes, agentes propios).Multi-client: works with any MCP client (Claude Desktop, ChatGPT connectors, Cursor, Hermes, custom agents).
- Dos modos: conexión remota (URL + credencial, cero instalación) o local (
stdio, el paquete@zentix/mcp-server).Two modes: remote connection (URL + credential, zero install) or local (stdio, the@zentix/mcp-serverpackage). - Multi-tenant: cada usuario conecta su propia cuenta; el aislamiento por tenant es idéntico al del dashboard.Multi-tenant: each user connects their own account; tenant isolation is identical to the dashboard.
- Más que tools: expone prompts (playbooks de ventas y métricas) y recursos (documentación) además de las herramientas.More than tools: also exposes prompts (sales and metrics playbooks) and resources (documentation) beyond the tools.
2 Tools disponiblesAvailable tools
| Tool | Qué haceWhat it does | TipoType |
|---|---|---|
zentix_crm_contacts_search | Busca o lee contactos del CRMSearches or reads CRM contacts | LecturaRead |
zentix_crm_conversations_list | Lista conversaciones por contacto, estado o canalLists conversations by contact, status or channel | LecturaRead |
zentix_crm_deals_list | Lista tratos del pipeline por etapaLists pipeline deals by stage | LecturaRead |
zentix_crm_escalations_list | Lista escalaciones y handoffs a humanoLists escalations and human handoffs | LecturaRead |
zentix_crm_followups_list | Lista seguimientos pendientesLists pending follow-ups | LecturaRead |
zentix_payment_links_read | Lee enlaces de pago y la configuración (versión incluida)Reads payment links and the config (version included) | LecturaRead |
zentix_agenda_meetings_list | Lee las reuniones de un mes (YYYY-MM)Reads the meetings of one month (YYYY-MM) | LecturaRead |
zentix_agents_list | Lista los agentes IA (chatbots) de la cuentaLists the account AI agents (chatbots) | LecturaRead |
zentix_metrics_summary | Métricas de overview, analytics y ventas por rango de fechasOverview, analytics and sales metrics for a date range | LecturaRead |
zentix_agenda_meeting_create | Agenda una reunión nueva (requiere escrituras activadas)Books a new meeting (requires writes enabled) | EscrituraWrite |
zentix_payment_link_create | Crea un enlace de pago (requiere escrituras activadas)Creates a payment link (requires writes enabled) | EscrituraWrite |
3 Credenciales: token o API keyCredentials: token or API key
El endpoint acepta dos tipos de credencial en Authorization: Bearer <credencial>:
The endpoint accepts two credential types in Authorization: Bearer <credential>:
- Firebase ID token — el token de tu sesión (
currentUser.getIdToken()). Vale ~1 hora; renuévalo congetIdToken(true). Ideal para uso interactivo.Firebase ID token — your session token (currentUser.getIdToken()). Valid ~1 hour; renew withgetIdToken(true). Best for interactive use. - API key de MCP (
zmx_…) — clave de larga vida para agentes desatendidos (Hermes, automatizaciones). El servidor la resuelve a tu tenant y mintea el token por ti. Recomendada.MCP API key (zmx_…) — a long-lived key for unattended agents (Hermes, automations). The server resolves it to your tenant and mints the token for you. Recommended.
Crear una API keyCreating an API key
Autenticado con tu token de sesión (por ejemplo desde la consola del navegador en app.zentixchatbot.cloud):
Authenticated with your session token (for example from the browser console on app.zentixchatbot.cloud):
const token = await firebase.auth().currentUser.getIdToken();
// Crear la key (el valor completo se muestra UNA sola vez)
const res = await fetch('/api/mcp-keys', {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Mi agente' })
});
const { key } = await res.json(); // zmx_... → guárdala en tu gestor de secretos
// Listar y revocar
GET /api/mcp-keys
DELETE /api/mcp-keys?keyId=<id>
4 Conexión remota (recomendada)Remote connection (recommended)
La conexión remota no requiere instalar nada: el cliente MCP llama a
https://app.zentixchatbot.cloud/api/mcp y se autentica con tu credencial.
The remote connection requires no install: the MCP client calls
https://app.zentixchatbot.cloud/api/mcp and authenticates with your credential.
Claude Desktop / Claude Code
{
"mcpServers": {
"zentix": {
"type": "http",
"url": "https://app.zentixchatbot.cloud/api/mcp",
"headers": { "Authorization": "Bearer <TU_CREDENCIAL>" }
}
}
}
Claude Code (CLI)
claude mcp add --transport http zentix https://app.zentixchatbot.cloud/api/mcp \
--header "Authorization: Bearer <TU_CREDENCIAL>"
Cursor (.cursor/mcp.json)
{
"mcpServers": {
"zentix": {
"url": "https://app.zentixchatbot.cloud/api/mcp",
"headers": { "Authorization": "Bearer <TU_CREDENCIAL>" }
}
}
}
Prueba rápida con curlQuick test with curl
curl -s https://app.zentixchatbot.cloud/api/mcp \
-H "Authorization: Bearer $ZENTIX_CREDENTIAL" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
401 con un mensaje accionable; nunca hay reintentos silenciosos con un token vencido.
Without a credential the response is 401 with an actionable message; there are never silent retries with an expired token.
5 Conexión local (stdio)Local connection (stdio)
Para uso interno o instalación offline, el paquete @zentix/mcp-server corre en tu
máquina sobre stdio. Empaqueta el tarball desde el repositorio (la publicación en npm es un paso
aparte), instálalo global y registra el comando zentix-mcp.
For internal or offline use, the @zentix/mcp-server package runs on your
machine over stdio. Pack the tarball from the repository (npm publishing is a separate step), install
it globally and register the zentix-mcp command.
git clone https://github.com/jgazcagtz/zentix_1.0 && cd zentix_1.0
npm pack ./mcp # → zentix-mcp-server-0.4.0.tgz
npm install -g ./zentix-mcp-server-0.4.0.tgz
{
"mcpServers": {
"zentix": {
"command": "zentix-mcp",
"env": {
"ZENTIX_ID_TOKEN": "<TU_FIREBASE_ID_TOKEN>",
"ZENTIX_MCP_ALLOW_WRITES": "0"
}
}
}
}
| VariableVariable | DefaultDefault | PropósitoPurpose |
|---|---|---|
ZENTIX_ID_TOKEN | — | Token de Firebase del usuario (obligatorio para llamar tools)User Firebase token (required to call tools) |
ZENTIX_API_BASE | https://app.zentixchatbot.cloud | Origen de la API (solo orígenes públicos https)API origin (public https origins only) |
ZENTIX_MCP_ALLOW_WRITES | 0 | Interruptor local de escrituras (1 = habilita las tools de creación)Local write switch (1 = enables the create tools) |
6 Escrituras y reciboWrites and receipts
Las únicas herramientas de escritura son zentix_agenda_meeting_create y
zentix_payment_link_create, deliberadamente acotadas: su action está fijado en
código (el modelo nunca puede llegar a actualizar, cancelar o eliminar), exigen un requestId
— tu clave de idempotencia — y devuelven el recibo de la API. Reintentar con la misma clave devuelve
el mismo resultado, sin duplicados.
The only write tools are zentix_agenda_meeting_create and
zentix_payment_link_create, deliberately narrow: their action is hardcoded
(the model can never reach update, cancel or delete), they require a requestId — your
idempotency key — and they return the API receipt. Retrying with the same key returns the same
result, no duplicates.
- Interruptor: las tools de escritura solo responden si el servidor corre con
ZENTIX_MCP_ALLOW_WRITES=1; si no, fallan conwrites_disabledantes de cualquier llamada de red.Switch: write tools only respond when the server runs withZENTIX_MCP_ALLOW_WRITES=1; otherwise they fail withwrites_disabledbefore any network call. - Recibo: la respuesta incluye el objeto creado tal cual la devolvió la API — revísalo antes de considerar la acción hecha.Receipt: the response includes the created object exactly as the API returned it — review it before treating the action as done.
- Enlaces de pago: lee primero
zentix_payment_links_readpara obtenerexpectedConfigVersion; el importe va enamountCents(150000 = 1500.00).Payment links: readzentix_payment_links_readfirst to getexpectedConfigVersion; amounts go inamountCents(150000 = 1500.00).
7 Prompts y recursosPrompts and resources
Además de tools, el servidor expone prompts (playbooks listos para usar en tu asistente) y recursos (documentación legible por el modelo): Beyond tools, the server exposes prompts (ready-made playbooks for your assistant) and resources (model-readable documentation):
zentix_pipeline_review— revisa el pipeline por etapas y propone acciones.reviews the pipeline stage by stage and proposes actions.zentix_prepare_sales_call— briefing pre-llamada de un contacto (historial, seguimientos, puntos de conversación).pre-call briefing for a contact (history, follow-ups, talking points).zentix_metrics_brief— briefing de métricas para un rango de fechas.metrics briefing for a date range.zentix://docs/toolsyzentix://docs/security— referencia de tools y modelo de seguridad como recursos MCP.tool reference and security model as MCP resources.
8 Modelo de seguridadSecurity model
| CapaLayer | Qué garantizaWhat it guarantees |
|---|---|
| Token passthrough / API keyToken passthrough / API key | La identidad siempre sale de la credencial; el servidor no interpreta tokens ni guarda service accountsIdentity always comes from the credential; the server never interprets tokens or holds service accounts |
| Aislamiento por tenantTenant isolation | El uid siempre sale de la credencial; uid/userId en el input del modelo se rechazaThe uid always comes from the credential; uid/userId in model input is rejected |
| Lista blanca de endpointsEndpoint allowlist | Solo rutas listadas en código son alcanzables; admin, crons, credenciales de canales y borrados jamásOnly code-listed routes are reachable; admin, crons, channel credentials and erasure never |
| Schemas cerradosClosed schemas | Los inputs rechazan campos no declarados (additionalProperties: false)Inputs reject undeclared fields (additionalProperties: false) |
| RedacciónRedaction | Errores y logs nunca contienen tokens ni secretsErrors and logs never contain tokens or secrets |
| Origen validadoValidated origin | El servidor solo llama a un origen https público; bloquea loopback, redes privadas y direcciones reservadasThe server only calls a public https origin; loopback, private and reserved addresses are blocked |
| Rate limitRate limit | Ventana por credencial (60/min por defecto) y el 429 de la API se propaga como error tipadoPer-credential window (60/min default) and the API's 429 surfaces as a typed error |
9 Solución de problemasTroubleshooting
| SíntomaSymptom | Causa y arregloCause and fix |
|---|---|
401 Unauthorized | Falta el header Authorization, el token expiró (renueva con getIdToken(true)) o la API key fue revocadaMissing Authorization header, expired token (renew with getIdToken(true)), or a revoked API key |
writes_disabled | Las tools de escritura están apagadas: arranca el servidor con ZENTIX_MCP_ALLOW_WRITES=1Write tools are off: start the server with ZENTIX_MCP_ALLOW_WRITES=1 |
rate_limited | Espera el Retry-After indicado; no reintentar en bucleWait for the indicated Retry-After; do not retry in a loop |
endpoint_not_allowed | El modelo pidió una ruta fuera de la lista blanca: comportamiento esperadoThe model asked for a non-allowlisted route: expected behavior |
invalid_api_key | La key no existe o fue revocada: crea otra desde /api/mcp-keysThe key does not exist or was revoked: create another via /api/mcp-keys |
insecure_api_origin | ZENTIX_API_BASE no es un origen https público válidoZENTIX_API_BASE is not a valid public https origin |
| Resultado truncadoTruncated result | Los resultados se recortan a 60,000 caracteres: pide menos registros por llamadaResults are clipped at 60,000 characters: request fewer records per call |
Documentación relacionadaRelated documentation
- Documentación de APIAPI documentation — los endpoints detrás de cada toolthe endpoints behind each tool
- Base de conocimientoKnowledge base — guías de productoproduct guides
- ContactoContact — soporte de integraciónintegration support