Skip to main content
Glama
ictbroadcast-mcp

ictbroadcast-mcp

Official

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

Requires Node.js 18 or newer.

Related MCP server: Zoho Campaigns MCP

Configure

Variable

Required

Default

ICTBROADCAST_BASE_URL

yes

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

ICTBROADCAST_USERNAME

yes

API account username

ICTBROADCAST_PASSWORD

yes

Password for that account

ICTBROADCAST_MCP_ALLOW_WRITE

no

false

Unlock start/stop campaign (see Safety)

ICTBROADCAST_TIMEOUT_MS

no

30000

Per-request timeout

ICTBROADCAST_TLS_INSECURE

no

false

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

ictbroadcast_list_campaigns

List campaigns (id and name)

ictbroadcast_campaign_status

Live status of a campaign (running, stopped)

ictbroadcast_campaign_summary

Totals: answered, failed, human vs machine

ictbroadcast_campaign_result

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

Write tools appear only when ICTBROADCAST_MCP_ALLOW_WRITE=true:

Tool

What it does

ictbroadcast_start_campaign

Launch a campaign — begins live outbound calling

ictbroadcast_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 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 tools
ictbroadcast_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 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.

Conciseness4/5

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.

Completeness3/5

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.

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

Purpose4/5

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.

Usage Guidelines3/5

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

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

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

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

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv0.1.1
    • Changedictbroadcast_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
    • Changedictbroadcast_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
    • Changedictbroadcast_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 observedictbroadcast_campaign_result
    • First observedictbroadcast_campaign_status
    • First observedictbroadcast_campaign_summary
    • First observedictbroadcast_list_campaigns

TDQS

A3.6/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides 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.
    16
    2
    MIT
  • 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
    144 npm
    16
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to list and track fax transmissions, and, when write access is enabled, upload documents and send faxes through ICTFax.
    2
    247 npm
    17
    MIT