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

11 tools Token or API key Read-only by default MCP 2025-06-18

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-server package).
  • 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

ToolWhat it doesType
zentix_crm_contacts_searchSearches or reads CRM contactsRead
zentix_crm_conversations_listLists conversations by contact, status or channelRead
zentix_crm_deals_listLists pipeline deals by stageRead
zentix_crm_escalations_listLists escalations and human handoffsRead
zentix_crm_followups_listLists pending follow-upsRead
zentix_payment_links_readReads payment links and the config (version included)Read
zentix_agenda_meetings_listReads the meetings of one month (YYYY-MM)Read
zentix_agents_listLists the account AI agents (chatbots)Read
zentix_metrics_summaryOverview, analytics and sales metrics for a date rangeRead
zentix_agenda_meeting_createBooks a new meeting (requires writes enabled)Write
zentix_payment_link_createCreates a payment link (requires writes enabled)Write
Destructive tools (deleting contacts, purging data, configuring channels) and admin routes do not exist on the MCP server: a code-level allowlist blocks them even if the model asks for them by name.

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 with getIdToken(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>
Keys are stored hashed (SHA-256) only, are revocable, limited to 20 active per account, and can be deleted at any time. The full value is never shown again.

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":{}}'
Without a credential the response is 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"
      }
    }
  }
}
VariableDefaultPurpose
ZENTIX_ID_TOKEN—User Firebase token (required to call tools)
ZENTIX_API_BASEhttps://app.zentixchatbot.cloudAPI origin (public https origins only)
ZENTIX_MCP_ALLOW_WRITES0Local 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 with writes_disabled before 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_read first to get expectedConfigVersion; amounts go in amountCents (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/tools y zentix://docs/security — tool reference and security model as MCP resources.

8 Security model

LayerWhat it guarantees
Token passthrough / API keyIdentity always comes from the credential; the server never interprets tokens or holds service accounts
Tenant isolationThe uid always comes from the credential; uid/userId in model input is rejected
Endpoint allowlistOnly code-listed routes are reachable; admin, crons, channel credentials and erasure never
Closed schemasInputs reject undeclared fields (additionalProperties: false)
RedactionErrors and logs never contain tokens or secrets
Validated originThe server only calls a public https origin; loopback, private and reserved addresses are blocked
Rate limitPer-credential window (60/min default) and the API's 429 surfaces as a typed error

9 Troubleshooting

SymptomCause and fix
401 UnauthorizedMissing Authorization header, expired token (renew with getIdToken(true)), or a revoked API key
writes_disabledWrite tools are off: start the server with ZENTIX_MCP_ALLOW_WRITES=1
rate_limitedWait for the indicated Retry-After; do not retry in a loop
endpoint_not_allowedThe model asked for a non-allowlisted route: expected behavior
invalid_api_keyThe key does not exist or was revoked: create another via /api/mcp-keys
insecure_api_originZENTIX_API_BASE is not a valid public https origin
Truncated resultResults are clipped at 60,000 characters: request fewer records per call

Related documentation

No results for your search.