ictdialer-mcp
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ictdialer-mcplist my outbound campaigns and show their current status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ictdialer-mcp
A Model Context Protocol server for ICTDialer — the cloud auto-dialer and predictive-dialer platform from ICT Innovations. ICTDialer.com is the hosted edition of ICTContact and runs the same engine, so this server speaks that API.
It lets an AI assistant monitor outbound campaigns — list them, check status, read summaries and per-call results — and, only when you turn writes on, start and stop them.
Install
npx -y ictdialer-mcp # no install
npm install -g ictdialer-mcpRequires Node.js 18 or newer.
Related MCP server: ictcontact-mcp
Configure
Variable | Required | Default | |
| yes | Server base URL, without the | |
| yes | API account username | |
| yes | Password for that account | |
| no |
| Unlock start/stop campaign (see Safety) |
| no |
| Per-request timeout |
| no |
| Skip TLS verification — self-signed test servers only |
Claude Desktop example
{
"mcpServers": {
"ictdialer": {
"command": "npx",
"args": ["-y", "ictdialer-mcp"],
"env": {
"ICTDIALER_BASE_URL": "https://your-ictdialer",
"ICTDIALER_USERNAME": "admin",
"ICTDIALER_PASSWORD": "your-password"
}
}
}
}Tools
Read tools are always available:
Tool | What it does |
| List campaigns (id and name) |
| Live status of a campaign (running, stopped) |
| Totals: answered, failed, human vs machine |
| Per-call results (contact, response, AMD, DNC) |
Write tools appear only when ICTDIALER_MCP_ALLOW_WRITE=true:
Tool | What it does |
| Launch a campaign — begins live outbound calling |
| Stop a running campaign |
Safety
The server is read-only by default. Starting a campaign begins live outbound
calling and can cost real money, so ictdialer_start_campaign and
ictdialer_stop_campaign are not registered at all unless you set
ICTDIALER_MCP_ALLOW_WRITE=true.
How it connects
ICTDialer exposes a form-encoded RPC API at {base}/rest/<Method>. Each call carries
the account username and password; the server sends those for you. There is no separate
token to provision.
About
Built by Tahir Almas at ICT Innovations — the team behind ICTDialer, ICTContact, ICTBroadcast, ICTFax and ICTPBX. Learn more at ictdialer.com.
MIT licensed. Issues and PRs welcome at github.com/ictinnovations/ictdialer-mcp.
Available Tools
4 toolsictdialer_campaign_resultCampaign call resultsBRead-only
Per-call results for a campaign (contact, response, answering-machine detection, DNC), optionally filtered by call status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Optional call-status filter. | |
| campaign_id | Yes | The campaign id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context about the returned result categories (contact, response, answering-machine detection, DNC) and the status filter, but it does not disclose pagination, result limits, or data volume behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted wording. It immediately identifies the resource and the optional filtering behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only retrieval tool with no output schema, the description is largely complete: it names the result categories and the optional filter. Minor gaps around pagination and result limits keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds little beyond restating the optional status filter; the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It clearly states the resource returned: per-call campaign results, including contact, response, answering-machine detection, and DNC. This distinguishes it implicitly from sibling summary/status/list tools, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only mentions an optional call-status filter and gives no guidance on when to use this tool rather than ictdialer_campaign_summary, ictdialer_campaign_status, or ictdialer_list_campaigns. The agent must infer the selection criteria from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictdialer_campaign_statusCampaign statusARead-only
Live status of a campaign by id (for example running or stopped). Poll this while a campaign runs.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | The campaign id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the polling recommendation and the nature of the returned value (live status such as running/stopped), which is useful context but no detail on response shape or freshness/latency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose, zero filler. Every clause contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, the description supplies the key operational detail (polling) and the kind of value to expect. A brief note on what else the status response contains would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single campaign_id parameter, so the schema carries the semantics. The description only restates 'by id' without adding format or validity notes; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-and-resource pair ('Live status of a campaign by id') and names example values (running, stopped). It does not differentiate itself from close siblings like ictdialer_campaign_summary or ictdialer_campaign_result, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Poll this while a campaign runs' gives a real usage cue that implies this is for live monitoring. However, it never says when to prefer it over ictdialer_campaign_summary or ictdialer_campaign_result, nor any when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictdialer_campaign_summaryCampaign summaryBRead-only
Totals for a campaign: answered, failed, human vs machine and so on. Optionally scope to one agent/user id.
| Name | Required | Description | Default |
|---|---|---|---|
| usr_id | No | Optional agent/user id to scope the summary. | |
| campaign_id | Yes | The campaign id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the metric families returned, which is useful, but omits key behavioral facts such as the time window the totals cover (lifetime vs a period) and whether the aggregation is cached/live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the core behavior front-loaded and the optional parameter note second. The trailing 'and so on' is vague filler that could have been replaced with the actual remaining metrics or the time window.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required id, one optional filter) and read-only, and there is no output schema, so the description must carry the return-shape burden. It gestures at metric names but the metric list is open-ended ('and so on') and the aggregation window is undefined, leaving real ambiguity about what the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both properties (campaign_id required, usr_id optional scope) are fully documented in the schema. The description repeats the optional agent/user scoping without adding format, edge cases, or semantics beyond what the schema already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (campaign) and the kind of output (aggregate totals of answered, failed, human vs machine), which is enough to distinguish it from a generic list tool. It never names or contrasts itself with the close siblings ictdialer_campaign_status and ictdialer_campaign_result, so an agent must guess which of the three returns per-call records vs aggregates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage-ish statement is that the summary can be scoped to one agent/user id; there is no explicit when-to-use, no when-not-to-use, and no mention of the sibling tools that likely overlap (campaign_status, campaign_result). An agent has to infer selection criteria entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictdialer_list_campaignsList campaignsARead-only
List the outbound campaigns on the ICTDialer server (id and name of each). Start here to find a campaign id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the meaningful behavior that it returns only id and name for each outbound campaign, which is useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no fluff. The core purpose is front-loaded, and the additional 'Start here' guidance earns its place by helping an agent understand the workflow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only list tool with no output schema, the description provides everything an agent needs: what is listed, what fields are returned, and the role this tool plays relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description cannot add parameter semantics beyond the empty schema. With no parameters to document, a baseline of 4 is appropriate; there is nothing missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('outbound campaigns on the ICTDialer server'), and specifies the return contents ('id and name of each'). It also distinguishes itself from sibling tools by positioning itself as the entry point for finding a campaign id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Start here to find a campaign id' gives explicit guidance on when to use this tool first. It does not explicitly describe when to use the sibling tools, but the implication is clear that those require an id obtained from this list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.1- Changed
ictdialer_campaign_result3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / campaign_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / campaign_id / minimumAdded value: +-9007199254740991
- Changed
ictdialer_campaign_status3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / campaign_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / campaign_id / minimumAdded value: +-9007199254740991
- Changed
ictdialer_campaign_summary5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / campaign_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / campaign_id / minimumAdded value: +-9007199254740991 - added
Input schema / properties / usr_id / maximumAdded value: +9007199254740991 - added
Input schema / properties / usr_id / minimumAdded value: +-9007199254740991
4 tool updates
v0.1.0- First observed
ictdialer_campaign_result - First observed
ictdialer_campaign_status - First observed
ictdialer_campaign_summary - First observed
ictdialer_list_campaigns
TDQS
Scored across 4 tools
Each tool targets a distinct slice of campaign data: live status, aggregate totals, per-call rows, and the campaign list. The only mild overlap is status vs. summary, both 'campaign-level overview' tools, but descriptions differentiate live state from aggregate metrics well.
All names are snake_case and share the ictdialer_ prefix, with campaign-noun suffixes (status, summary, result). The outlier is ictdialer_list_campaigns, which uses verb_noun while the others use noun_resource ordering, a minor deviation.
Four tools is thin for a dialer server; the surface is entirely read-only monitoring with no control operations. Each tool earns its place, but the scope feels under-built rather than well-scoped.
Only observation is covered; there is no way to create, start, stop, pause, or edit a campaign, nor any contact/list management. An agent can inspect campaigns but hits a dead end for any lifecycle action.
Maintenance
Related MCP Connectors
AI dialer: add and find leads, list campaigns, and have the AI agent call a lead now.
Manage AI assistants, history, calls, campaigns, contacts, knowledge, messaging, and automations.
Manage your Telvana AI voice, SMS and chat agents, conversations, campaigns and outbound calls.
Manage SalesCloser AI sales agents, leads, campaigns and calls from your AI assistant.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables to interact with Zoho Campaigns API v1.1, supporting OAuth2 authentication, contact and campaign management, bounced contact queries, and more, through natural language.11MIT

ictcontact-mcpofficial
AlicenseBqualityAmaintenanceEnables AI assistants to monitor outbound campaigns in ICTContact/ICTDialer, including listing campaigns, checking status, reading summaries and per-call results, and optionally starting and stopping campaigns when write access is enabled.4144 npm16MIT
ictbroadcast-mcpofficial
AlicenseAqualityBmaintenanceEnables AI assistants to monitor ICTBroadcast outbound voice, SMS, and fax campaigns by listing campaigns, checking status, and reading summaries and per-call results, with optional start/stop control when write access is enabled.4234 npm16MIT
ictcrm-mcpofficial
AlicenseAqualityAmaintenanceEnables AI assistants to read ICTCRM contact groups and, when write access is enabled, create or delete contacts and add contacts to campaigns.1226 npm1MIT