Available tools
The MCP server exposes 56 tools. Each one maps to a single Zyles REST API endpoint and relays its response verbatim.
You do not need to memorise these names — Claude picks the right tool itself. The list helps you understand what an assistant actually did, and lets you write more precise instructions.
project_id on every toolEvery tool except workspaces_list also accepts an optional project_id.
Without it, the connection's default project applies; API-key connections ignore
the field. See Using several
projects.
Connection & projects
| Tool | Endpoint | Purpose |
|---|---|---|
zyles_whoami | GET /me | Shows the project and user behind the current token. A good first test. |
workspaces_list | — | Lists the reachable projects with their ids, plus the default project. |
Leads
| Tool | Endpoint | Purpose |
|---|---|---|
leads_create | POST /api/leads/add | Creates leads in a batch. The only required field per lead is phone_number. |
leads_list | POST /api/leads | Searches and filters leads; supports filters, search and pagination. |
leads_get | GET /api/leads/{id} | Reads a single lead. |
leads_update | PUT /api/leads/{id} | Updates fields. archived: true archives, false restores. |
Leads can only be archived. That is by design, so history is preserved.
Smart Views
| Tool | Endpoint | Purpose |
|---|---|---|
smart_views_list | GET /api/smart-views | Lists the project's smart views. |
smart_views_create | POST /api/smart-views | Creates a view; name and filters are required. |
smart_views_update | PUT /api/smart-views/{id} | Updates the name or filters. |
smart_views_delete | DELETE /api/smart-views/{id} | Deletes a view. |
smart_views_leads | POST /api/smart-views/{id}/leads | Resolves a view to its matching leads. |
custom_fields_list | GET /api/custom-fields | Lists the custom field definitions (id, name, field_type, options, external_id). The id is the field_id for the custom_field_value filter. |
Filter reference (filters)
Shape: {"operator":"AND"|"OR","conditions":[…]}; a condition is {"field","operator","value"} or another nested {"operator","conditions"}.
| Field | Operators | Value |
|---|---|---|
first_name, last_name, email, phone_number, notes | equals, not_equals, contains, not_contains, starts_with, ends_with, is_null, is_not_null, in, not_in | text |
status_id | equals, not_equals, in, not_in, is_null, is_not_null | status uuid (lead_statuses_list) |
created_at, updated_at, last_called_at | equals, greater_than, less_than, greater_than_or_equal, less_than_or_equal, is_null, is_not_null | ISO date or a relative preset (see below) |
call_amount | equals, greater_than, less_than, greater_than_or_equal, less_than_or_equal | number |
tag_id | equals, not_equals, in, not_in | tag uuid (tags_list) |
call_outcome_id | equals, not_equals, in, not_in, is_null, is_not_null | outcome uuid (call_outcomes_list) |
activity_type | equals, not_equals, in, not_in | call, email, note, … |
custom_activity_type_id | equals, not_equals, in, not_in, is_null, is_not_null | type uuid (custom_activity_types_list) – "has (no) custom activity of this type" |
custom_activity_field_value | equals, not_equals, contains, not_contains, starts_with, ends_with | {"field_id": <field uuid>, "value": <text>} |
custom_field_value | equals, not_equals, contains, not_contains, starts_with, ends_with, is_null, is_not_null, greater_than, less_than, in, not_in | {"field_id": <custom field uuid from custom_fields_list>, "value": <text>} |
Multi-choice custom fields (e.g. the "Tags" field of a Close.io import) are stored as a list; contains with one option means "has this option":
{"field":"custom_field_value","operator":"contains","value":{"field_id":"<id from custom_fields_list>","value":"kampagne-2a-start"}}
contains is a substring match: newsletter 1 also matches newsletter 1 durchlaufen.
Relative date presets
Instead of an ISO date, created_at, updated_at, last_called_at and custom fields of type date accept one of these presets. They are resolved server-side on every query, so the smart view moves with the calendar rather than freezing a date.
today · yesterday · this_week · last_week · this_month · last_month · this_quarter · last_quarter · this_year · last_year · last_7_days · last_30_days · last_90_days
Weeks start on Monday. last_7_days is the window from today minus 7 days through today, both inclusive.
An unknown value is not an error. The filter is saved and then matches nothing — the smart view stays empty, silently. Use exactly the spellings above; there is no last_14_days or letzte_woche.
Power dialers
| Tool | Endpoint | Purpose |
|---|---|---|
power_dialers_list | POST /api/power-dialer/list | Lists the dialer campaigns. |
power_dialers_create | POST /api/power-dialer | Creates a campaign (AI or MANUAL). |
power_dialers_get | POST /api/power-dialer/smart-view/{id} | Reads a campaign by smart view and mode. |
power_dialers_delete | DELETE /api/power-dialer/{id} | Deletes a campaign. |
power_dialers_set_status | PUT /api/power-dialer/{id}/status | Sets idle, running or finished — i.e. starts or stops the campaign. |
power_dialers_set_schedule | PUT /api/power-dialer/{id}/schedule | Sets the calling schedule. |
user_id is required hereThe backend derives the project from the token but not the user. All power
dialer tools therefore need a valid user_id. Claude usually works it out
itself; otherwise it will ask.
AI agents
| Tool | Endpoint | Purpose |
|---|---|---|
agents_list | GET /api/agents | Lists the project's agents. |
agents_create | POST /api/agents | Creates an agent (type defaults to caller). |
agents_get | GET /api/agents/{id} | Reads an agent and its configuration. |
agents_update | PUT /api/agents/{id} | Updates name, type or configuration. |
agents_delete | DELETE /api/agents/{id} | Deletes an agent. |
Activities
| Tool | Endpoint | Purpose |
|---|---|---|
activities_list | GET /api/activities | Reads the timeline; all parameters optional (lead_id, activity_type, …). |
activities_get | GET /api/activities/{id} | Reads a single activity. |
activities_create_note | POST /api/activities/note | Creates a note (lead_id + content). |
activities_create_call | POST /api/activities/call | Logs a call (lead_id + provider_call_id). |
Lead statuses
| Tool | Endpoint | Purpose |
|---|---|---|
lead_statuses_list | GET /api/lead-statuses | Lists the project's status values. |
lead_statuses_create | POST /api/lead-statuses | Creates a status. |
lead_statuses_update | PUT /api/lead-statuses/{id} | Updates a status. |
lead_statuses_delete | DELETE /api/lead-statuses/{id} | Deletes a status. |
Call outcomes
Each outcome type's description and the agent's configuration.postCallPrompt
field control which outcome the AI sets after a call — not the agent prompt. See
Post-call outcomes.
| Tool | Endpoint | Purpose |
|---|---|---|
call_outcomes_list | GET /api/call-outcomes | Lists the outcome types. |
call_outcomes_create | POST /api/call-outcomes | Creates an outcome type. |
call_outcomes_update | PUT /api/call-outcomes/{id} | Updates an outcome type. |
call_outcomes_delete | DELETE /api/call-outcomes/{id} | Deletes an outcome type. |
activity_set_outcome | POST /api/activities/{id}/outcome | Assigns an outcome to an activity. |
activity_clear_outcome | DELETE /api/activities/{id}/outcome | Removes that assignment again. |
Custom activities
| Tool | Endpoint | Purpose |
|---|---|---|
custom_activity_types_list | GET /api/custom-activity-types | Lists the custom activity types. |
custom_activity_type_fields_list | GET /api/custom-activity-types/{id}/fields | Shows a type's fields and which are required. |
custom_activities_create | POST /api/activities/custom | Logs a custom activity on a lead. |
custom_activities_get | GET /api/activities/custom/{id} | Reads a custom activity. |
custom_activities_update | PUT /api/activities/custom/{id} | Updates a custom activity. |
custom_activities_delete | DELETE /api/activities/custom/{id} | Deletes a custom activity. |
Workflows
| Tool | Endpoint | Purpose |
|---|---|---|
workflows_list | GET /api/workflows | Lists the project's workflows. |
workflows_get | GET /api/workflows/{id} | Reads a workflow, including its definition. |
workflows_create | POST /api/workflows | Creates a workflow. name, definition, trigger_config required; enabled defaults to false (inert until enabled). |
workflows_update | PUT /api/workflows/{id} | Updates a workflow. definition/trigger_config replace the stored value wholesale — read it first with workflows_get. |
workflows_delete | DELETE /api/workflows/{id} | Deletes a workflow. |
definition and trigger_config are JSON objects. Before saving, the MCP
server structurally validates the graph (known node types, resolvable edges) and
rejects a malformed definition without calling the backend. Execution and
debugging tools (run, run history) are intentionally omitted.
Error behaviour
The MCP server does not reshape backend responses. When a call fails, Claude receives an error result carrying the unmodified HTTP status and body — for example:
Backend returned 403: {"success":false,"message":"..."}
Such an error should be read rather than retried: it states the reason (missing permission, plan limit, invalid input). If the backend cannot be reached at all, the server reports a connection error ("unreachable") instead.
The full error model is documented under Errors & conventions.