Skip to main content
Glama
ictdialer-mcp

ictdialer-mcp

Official

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-mcp

Requires Node.js 18 or newer.

Related MCP server: ictcontact-mcp

Configure

Variable

Required

Default

ICTDIALER_BASE_URL

yes

Server base URL, without the /rest suffix, e.g. https://your-ictdialer

ICTDIALER_USERNAME

yes

API account username

ICTDIALER_PASSWORD

yes

Password for that account

ICTDIALER_MCP_ALLOW_WRITE

no

false

Unlock start/stop campaign (see Safety)

ICTDIALER_TIMEOUT_MS

no

30000

Per-request timeout

ICTDIALER_TLS_INSECURE

no

false

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

ictdialer_list_campaigns

List campaigns (id and name)

ictdialer_campaign_status

Live status of a campaign (running, stopped)

ictdialer_campaign_summary

Totals: answered, failed, human vs machine

ictdialer_campaign_result

Per-call results (contact, response, AMD, DNC)

Write tools appear only when ICTDIALER_MCP_ALLOW_WRITE=true:

Tool

What it does

ictdialer_start_campaign

Launch a campaign — begins live outbound calling

ictdialer_stop_campaign

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 tools
ictdialer_campaign_resultCampaign call resultsB
Read-only

Per-call results for a campaign (contact, response, answering-machine detection, DNC), optionally filtered by call status.

NameRequiredDescriptionDefault
statusNoOptional call-status filter.
campaign_idYesThe campaign id.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 statusA
Read-only

Live status of a campaign by id (for example running or stopped). Poll this while a campaign runs.

NameRequiredDescriptionDefault
campaign_idYesThe campaign id.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 summaryB
Read-only

Totals for a campaign: answered, failed, human vs machine and so on. Optionally scope to one agent/user id.

NameRequiredDescriptionDefault
usr_idNoOptional agent/user id to scope the summary.
campaign_idYesThe campaign id.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 campaignsA
Read-only

List the outbound campaigns on the ICTDialer server (id and name of each). Start here to find a campaign id.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv0.1.1
    • Changedictdialer_campaign_result3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / campaign_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / campaign_id / minimum
        Added value: +-9007199254740991
    • Changedictdialer_campaign_status3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / campaign_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / campaign_id / minimum
        Added value: +-9007199254740991
    • Changedictdialer_campaign_summary5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / campaign_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / campaign_id / minimum
        Added value: +-9007199254740991
      • addedInput schema / properties / usr_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / usr_id / minimum
        Added value: +-9007199254740991
  2. 4 tool updatesv0.1.0
    • First observedictdialer_campaign_result
    • First observedictdialer_campaign_status
    • First observedictdialer_campaign_summary
    • First observedictdialer_list_campaigns

TDQS

B3.4/5.0

Scored across 4 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness2/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables to interact with Zoho Campaigns API v1.1, supporting OAuth2 authentication, contact and campaign management, bounced contact queries, and more, through natural language.
    11
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables 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.
    4
    77 npm
    16
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    4
    80 npm
    16
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to read ICTCRM contact groups and, when write access is enabled, create or delete contacts and add contacts to campaigns.
    1
    76 npm
    1
    MIT