ictbroadcast-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., "@ictbroadcast-mcpHow is my outbound voice campaign going and how many calls were answered?"
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.
ictbroadcast-mcp
A Model Context Protocol server for ICTBroadcast — the voice, SMS and fax broadcasting and call-center platform from ICT Innovations.
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 ictbroadcast-mcp # no install
npm install -g ictbroadcast-mcpRequires Node.js 18 or newer.
Related MCP server: Zoho Campaigns 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": {
"ictbroadcast": {
"command": "npx",
"args": ["-y", "ictbroadcast-mcp"],
"env": {
"ICTBROADCAST_BASE_URL": "https://your-ictbroadcast",
"ICTBROADCAST_USERNAME": "admin",
"ICTBROADCAST_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 ICTBROADCAST_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 ictbroadcast_start_campaign and
ictbroadcast_stop_campaign are not registered at all unless you set
ICTBROADCAST_MCP_ALLOW_WRITE=true.
How it connects
ICTBroadcast 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. (The ICTBroadcast REST API is bundled with the
Service Provider edition.)
About
Built by Tahir Almas at ICT Innovations — the team behind ICTBroadcast, ICTContact, ICTDialer, ICTFax and ICTPBX. Learn more at ictbroadcast.com.
MIT licensed. Issues and PRs welcome at github.com/ictinnovations/ictbroadcast-mcp.
Available Tools
4 toolsictbroadcast_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 and the bar is lower. The description adds useful content about what each record contains (contact, response, AMD, DNC), but says nothing about result volume, pagination, or truncation — relevant since per-call data for a campaign can be large.
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 filler; the parenthetical field list is the only elaboration and it earns its place. Slightly dense phrasing ('per-call results') rather than a clean verb, but nothing is wasted.
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?
Only two simple parameters and no nested objects, so the surface area is small and annotations cover safety. However, with no output schema, the description is the only place to convey return shape and any limits on volume, and it only lists four example fields without stating whether results are paginated or bounded.
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 and the baseline is 3. The description reinforces that status is an optional call-status filter but adds no allowed values, format, or default beyond what the schema states.
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 resource and scope — per-call results for a campaign — and enumerates the returned fields (contact, response, answering-machine detection, DNC), which clearly separates it from a campaign-level summary or status check. It never names the sibling tools (campaign_status, campaign_summary, list_campaigns), so the differentiation is implicit rather than explicit.
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 'optionally filtered by call status' implies when the status parameter matters, but there is no explicit when-to-use guidance and no routing to the alternatives. An agent must infer from the field list that this is the drill-down tool versus campaign_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictbroadcast_campaign_statusCampaign statusBRead-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 that responses reflect live state and can be polled, but it says nothing about freshness/staleness, rate limits, or whether polling is throttled — notable gaps given it explicitly instructs polling.
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 short sentences with zero filler, and the core purpose is front-loaded before the operational hint. Slightly terse but nothing wasted.
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-param read tool this is close to adequate: purpose, an example return value, and a usage cue. However, with no output schema to document return shape and no guidance on polling cadence or what other statuses exist, an agent still has gaps to fill.
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?
Single parameter with 100% schema description coverage, so the schema already defines campaign_id. The description only echoes 'by id' and adds no format or sourcing guidance, 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 a specific resource (campaign) and the exact facet returned (live status), with an inline example of the values ('running or stopped'). It implies but does not explicitly say how it differs from siblings like ictbroadcast_campaign_summary or ictbroadcast_campaign_result.
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?
'Poll this while a campaign runs' gives a clear triggering context, which is real guidance. But it offers no exclusions or routing — an agent still cannot tell from this text when to prefer campaign_summary or campaign_result instead, which are the ambiguous siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictbroadcast_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 safety is covered. The description adds useful content by enumerating the metric categories returned, but says nothing about whether the totals cover the campaign's full lifetime or a window, nor about auth or rate-limit behavior on the external system implied by openWorldHint.
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 short sentences with the resource and its metrics front-loaded, and no wasted preamble. The trailing 'and so on' is slightly imprecise but does signal a non-exhaustive list.
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 two-parameter read tool this is nearly adequate, but with no output schema the description carries the burden of describing the return shape, and it only lists sample metric names without stating the aggregation window or response structure. It is callable from what is given, but leaves real ambiguity about what the totals represent.
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 parameters are documented there, so the baseline of 3 applies. The description merely restates the optional usr_id scoping already present in the schema and adds no format or edge-case detail.
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 states concretely that the tool returns aggregated totals for a campaign and names sample metrics (answered, failed, human vs machine), which is more specific than a bare restatement of the name. It does not, however, distinguish itself from siblings like ictbroadcast_campaign_result or ictbroadcast_campaign_status, which sound like overlapping views of the same campaign.
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?
'Optionally scope to one agent/user id' gives a hint about a narrow use case, so usage is implied rather than explicit. There is no statement of when to prefer this over the result/status siblings, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictbroadcast_list_campaignsList campaignsARead-only
List the outbound campaigns on the ICTBroadcast 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?
The readOnlyHint annotation already covers the read-only nature, and the description is consistent with it, adding that the tool returns id and name pairs. It provides a small amount of behavioral context via 'Start here' but does not disclose additional traits such as pagination, ordering, or whether this returns all campaigns. No contradiction with 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?
Two concise sentences with no filler. The core purpose is front-loaded, and the workflow hint ('Start here') is placed second without redundancy.
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 parameterless list tool, the description adequately covers what it does and why an agent would use it first. It does not explicitly state that it returns all campaigns or describe an output structure beyond id/name, but the no-param schema and clear purpose make this sufficient for correct invocation.
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?
The tool has zero parameters and an empty input schema, so there is nothing to document. The description adds no parameter details, but none are needed; a baseline of 4 is appropriate for a no-parameter tool.
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 states a specific verb-resource pair ('List the outbound campaigns on the ICTBroadcast server') and explicitly names the returned data (id and name of each). The phrase 'Start here to find a campaign id' clearly positions this as the entry point, distinguishing it from the result/status/summary siblings that likely consume the 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?
'Start here to find a campaign id' is an explicit usage instruction that tells an agent when to invoke this tool first. It gives clear context for the workflow, though it does not explicitly name the alternative sibling tools or state when not to use this one.
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
ictbroadcast_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
ictbroadcast_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
ictbroadcast_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
ictbroadcast_campaign_result - First observed
ictbroadcast_campaign_status - First observed
ictbroadcast_campaign_summary - First observed
ictbroadcast_list_campaigns
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: listing campaigns, checking live status, viewing aggregate totals, or inspecting per-call results. The descriptions make the boundaries between status, summary, and result explicit.
All tools use snake_case and a consistent ictbroadcast_ prefix. There is a minor structural deviation between ictbroadcast_campaign_status/summary/result and ictbroadcast_list_campaigns, but the pattern remains readable.
Four tools is a reasonable, focused set for campaign monitoring and reporting. It is slightly thin if the server is intended to cover broader campaign administration, but each tool earns its place.
The set covers the read/reporting side well: list campaigns, check status, get summary totals, and inspect per-call results. However, it lacks campaign lifecycle controls such as start/stop and broader management operations, which are notable gaps for an ICTBroadcast server.
Maintenance
Related MCP Connectors
Manage AI assistants, history, calls, campaigns, contacts, knowledge, messaging, and automations.
AI dialer: add and find leads, list campaigns, and have the AI agent call a lead now.
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
- AlicenseAqualityDmaintenanceProvides read access to campaign performance data from Google Ads, Meta Ads, and TikTok Ads via live API calls, enabling AI assistants to analyze and audit advertising campaigns.162MIT
- 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
ictfax-mcpofficial
AlicenseAqualityAmaintenanceEnables AI assistants to list and track fax transmissions, and, when write access is enabled, upload documents and send faxes through ICTFax.2247 npm17MIT