Skip to main content
Glama

Count contacts not yet messaged

getUnmessagedCampaignContacts
Read-onlyIdempotent

Counts a campaign's contacts who were never messaged, and those who stay because a message was sent, is sending, or they wrote first. Only a paused campaign is counted: on any other, 0 means not checked. kept can include never-messaged contacts whose message is being prepared or approved. Saves nothing.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "params": "<params>"
    },
    "name": "getUnmessagedCampaignContacts"
  }
}

Input Schema

NameRequiredDescriptionDefault
paramsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint/idempotent/non-destructive), the description discloses a real behavioral trap: a 0 result on a non-paused campaign means unchecked, not zero. It also warns that "kept" can include never-messaged contacts whose message is in preparation or approval. "Saves nothing" restates readOnlyHint rather than adding value, but the status caveat is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but the sentences are dense and one is ungrammatical ("because a message was sent, is sending, or they wrote first"), and the trailing fragment "Saves nothing." sits awkwardly at the end. The key constraint — the paused-only rule — lands second rather than being front-loaded.

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?

There is no output schema, so the description should define the return shape; it hints at two buckets (never-messaged and kept) but never states that the response contains counts or what they are named. For a counting tool whose entire value is the returned numbers, that leaves a real gap even though the paused-campaign caveat is well covered.

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 0% for the single UUID param, so the description carries the burden. Saying the scope is "a campaign's contacts" implies the id identifies a campaign, but it never explicitly maps the parameter or notes the failure behavior for an invalid or non-paused campaign id.

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 opens with a specific verb and resource ("Counts a campaign's contacts") and scopes it to never-messaged versus retained contacts, which is distinguishable from siblings like removeUnmessagedCampaignContacts. However, the second clause is grammatically tangled ("those who stay because a message was sent, is sending, or they wrote first"), so the notion of "kept" must be inferred rather than stated cleanly.

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?

It gives one concrete precondition — only paused campaigns are counted, and 0 elsewhere means "not checked" — which is genuinely useful context for interpreting a result. But it never names the obvious companion operation (removeUnmessagedCampaignContacts) or says when an agent should call this count versus listCampaignContacts, leaving routing between siblings implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources