Skip to main content
Glama

LinkedIn MCP Server (Salesbot)

add_contacts_to_campaign

Idempotent

Add saved contacts by contact_id to an existing campaign. Applies tenant-scoped blacklist and duplicate checks, but does NOT send or schedule outreach. For campaigns with a message step, contacts who already received a message from ANOTHER campaign of the same LinkedIn account within the last 30 days are NOT added; they are listed in recently_messaged_details with the reason (error code duplicate_cross_campaign). The response includes scheduled:false and next_tool: prepare_campaign_messages when drafts need approval, otherwise start_campaign. Use list_campaign_queue to inspect progress.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
campaign_idYesUUID of the campaign
contact_idsYesArray of contact UUIDs to add

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only cover safety and idempotency, but the description goes further: it discloses tenant-scoped blacklist/duplicate checks, the 30-day cross-campaign message exclusion, the recently_messaged_details response field, the error code duplicate_cross_campaign, and the scheduled:false / next_tool routing behavior. This gives substantial transparency beyond structured 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 compact and information-dense: each sentence covers a distinct aspect, from core function to edge-case filtering to response routing. There is no filler, repetition of schema, or unnecessary detail.

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?

Even without an output schema, the description names the critical response fields (recently_messaged_details, scheduled:false, next_tool) and directs the agent to list_campaign_queue for progress. For a tool of this complexity, an agent has enough information to invoke it and interpret the result.

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 input schema already documents both parameters at 100% coveragechers, so the baseline is 3. The description adds useful meaning by indicating contact_ids must be saved contacts subject to filtering, and campaign_id must be an existing campaign, which helps the agent understand valid inputs and expected behavior.

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 a specific action and resource: 'Add saved contacts by contact_id to an existing campaign.' It also distinguishes itself by explicitly saying it does NOT send or schedule outreach滕for example, separating this tool from campaign-starting tools like start_campaign or prepare_campaign_messages.

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?

It gives clear operational context: use this to populate an existing campaign before launch, where blacklist and duplicate checks apply. It also names follow-up tools via next_tool and list_campaign_queue. However, it does not explicitly contrast itself with sibling alternatives like add_contacts_to_list or exclude_contacts_from_campaign, so the when-not-to-use guidance is only partially explicit.

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.