Zyles MCP Server
The Zyles MCP server (Model Context Protocol) exposes the backend API as tools that AI clients such as Claude, Claude Code, or Cursor can call directly. Instead of calling endpoints yourself, you connect Claude to Zyles once and then say what you want in plain language:
"Create leads from this list and start the power dialer."
The server holds no data of its own: it forwards every call to the backend API — the same resources (leads, agents, power dialers …) and the same permissions as over HTTP. Validation, project scoping and plan limits are still enforced by the backend.
Endpoint
| Environment | URL | Transport |
|---|---|---|
| Production | https://mcp.zyles.ai/mcp | Streamable HTTP |
The server uses the Streamable HTTP transport (not stdio). The /sse and
/ paths are not used — always connect to /mcp.
Getting started
Setup takes about two minutes:
Authentication
There are two ways in:
-
OAuth 2.1 — sign in with your normal Zyles credentials in the browser. Clients that offer a Connect button use this (claude.ai, Claude Desktop, Claude Code). The connection covers all projects on your account.
-
Project-scoped API key as a bearer token in the
Authorizationheader — for clients without a connect button and for automations:Authorization: Bearer <your_zyles_api_key>
Without valid credentials the server responds with 401 Unauthorized. As with
the HTTP API, the token determines the active project; every access is scoped to
its project_id (see Authentication).
Give each user their own project-scoped key rather than sharing one. The key decides which workspace that person can read and modify through the MCP.
Multiple projects
When you connect via the OAuth flow, the connection covers all your
account's projects. workspaces_list enumerates them (including the default
project). Every tool optionally accepts project_id: pass it to act on a
specific project, omit it to use the default. The choice applies per call
(the server is stateless). A project-scoped API key, by contrast, is bound
to one project; project_id is then ignored.
Exactly one token is active at a time. Zyles never sends one project's credentials along with a request for another — cross-tenant mix-ups are impossible.
What Claude can do with it
| Area | Capabilities |
|---|---|
| Leads | create (including in batches), search, filter, read, update, archive |
| Smart views | create, update, delete, and resolve to matching leads |
| Power dialers | create, start, pause, schedule and delete campaigns |
| AI agents | create, configure, read, delete |
| Activities | read the timeline, log notes and calls |
| Lead statuses | manage the project's status values |
| Call outcomes | maintain outcome types and assign them to activities |
| Custom activities | manage custom activity types and entries |
The full list of all 42 tools, with the backend endpoint each one calls, is in the tool reference.
Leads are never hard-deleted — leads_update with archived: true archives
and false restores. Email activities and bulk imports are not exposed as tools
at the moment.
Requirements
- A Zyles account with API access (the
open_apientitlement). Without it, the very first tool call returns 403. - An MCP-capable client — e.g. Claude (web, desktop or code).
Individual actions additionally depend on your plan:
| Action | Tool | Requirement |
|---|---|---|
| Create an AI agent | agents_create | ai_assistants quota |
| Create a dialer | power_dialers_create | CampaignPlanning |
| Start a dialer | power_dialers_set_status → running | OutboundCalls |
When a limit applies, the MCP server passes the backend's 403 response through unchanged — so Claude shows you the exact message rather than silently swallowing the call.
Checking the connection
After setup, the zyles_whoami tool confirms the server is reachable and
authenticated, and shows the project and user the token points at.
Security
- Every request carries its own token; the server keeps no session state.
- Tokens are never logged and never returned to the caller.
- The server does not re-check permissions itself — it forwards each request to the backend, project-scoped. Claude therefore can never do more than you can with your own Zyles login.
- You can revoke access at any time by removing the connector in your client or revoking the API key in Zyles.