Servidor MCP de Zentix
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 What the MCP server is
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-client: works with any MCP client (Claude Desktop, ChatGPT connectors, Cursor, Hermes, custom agents).
- Two modes: remote connection (URL + credential, zero install) or local (
stdio, the@zentix/mcp-serverpackage). - Multi-tenant: each user connects their own account; tenant isolation is identical to the dashboard.
- More than tools: also exposes prompts (sales and metrics playbooks) and resources (documentation) beyond the tools.
2 Available tools
| Tool | What it does | Type |
|---|---|---|
zentix_crm_contacts_search | Searches or reads CRM contacts | Read |
zentix_crm_conversations_list | Lists conversations by contact, status or channel | Read |
zentix_crm_deals_list | Lists pipeline deals by stage | Read |
zentix_crm_escalations_list | Lists escalations and human handoffs | Read |
zentix_crm_followups_list | Lists pending follow-ups | Read |
zentix_payment_links_read | Reads payment links and the config (version included) | Read |
zentix_agenda_meetings_list | Reads the meetings of one month (YYYY-MM) | Read |
zentix_agents_list | Lists the account AI agents (chatbots) | Read |
zentix_metrics_summary | Overview, analytics and sales metrics for a date range | Read |
zentix_agenda_meeting_create | Books a new meeting (requires writes enabled) | Write |
zentix_payment_link_create | Creates a payment link (requires writes enabled) | Write |
3 Credentials: token or API key
The endpoint accepts two credential types in Authorization: Bearer <credential>:
- Firebase ID token — your session token (
currentUser.getIdToken()). Valid ~1 hour; renew withgetIdToken(true). Best for interactive use. - 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.
Creating an API key
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 Remote connection (recommended)
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>" }
}
}
}
Quick 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 with an actionable message; there are never silent retries with an expired token.
5 Local connection (stdio)
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"
}
}
}
}
| Variable | Default | Purpose |
|---|---|---|
ZENTIX_ID_TOKEN | — | User Firebase token (required to call tools) |
ZENTIX_API_BASE | https://app.zentixchatbot.cloud | API origin (public https origins only) |
ZENTIX_MCP_ALLOW_WRITES | 0 | Local write switch (1 = enables the create tools) |
6 Writes and receipts
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.
- Switch: write tools only respond when the server runs with
ZENTIX_MCP_ALLOW_WRITES=1; otherwise they fail withwrites_disabledbefore any network call. - Receipt: the response includes the created object exactly as the API returned it — review it before treating the action as done.
- Payment links: read
zentix_payment_links_readfirst to getexpectedConfigVersion; amounts go inamountCents(150000 = 1500.00).
7 Prompts and resources
Beyond tools, the server exposes prompts (ready-made playbooks for your assistant) and resources (model-readable documentation):
zentix_pipeline_review— reviews the pipeline stage by stage and proposes actions.zentix_prepare_sales_call— pre-call briefing for a contact (history, follow-ups, talking points).zentix_metrics_brief— metrics briefing for a date range.zentix://docs/toolsyzentix://docs/security— tool reference and security model as MCP resources.
8 Security model
| Layer | What it guarantees |
|---|---|
| Token passthrough / API key | Identity always comes from the credential; the server never interprets tokens or holds service accounts |
| Tenant isolation | The uid always comes from the credential; uid/userId in model input is rejected |
| Endpoint allowlist | Only code-listed routes are reachable; admin, crons, channel credentials and erasure never |
| Closed schemas | Inputs reject undeclared fields (additionalProperties: false) |
| Redaction | Errors and logs never contain tokens or secrets |
| Validated origin | The server only calls a public https origin; loopback, private and reserved addresses are blocked |
| Rate limit | Per-credential window (60/min default) and the API's 429 surfaces as a typed error |
9 Troubleshooting
| Symptom | Cause and fix |
|---|---|
401 Unauthorized | Missing Authorization header, expired token (renew with getIdToken(true)), or a revoked API key |
writes_disabled | Write tools are off: start the server with ZENTIX_MCP_ALLOW_WRITES=1 |
rate_limited | Wait for the indicated Retry-After; do not retry in a loop |
endpoint_not_allowed | The model asked for a non-allowlisted route: expected behavior |
invalid_api_key | The key does not exist or was revoked: create another via /api/mcp-keys |
insecure_api_origin | ZENTIX_API_BASE is not a valid public https origin |
| Truncated result | Results are clipped at 60,000 characters: request fewer records per call |
Related documentation
- API documentation — the endpoints behind each tool
- Knowledge base — product guides
- Contact — integration support