Skip to main content
Glama
voriq-ai

smartleadai-mcp

by voriq-ai

Smartlead: add leads to a campaign

smartlead_add_leads_to_campaign
Destructive

Import up to 400 leads into a specified campaign, automatically removing duplicate emails before submission. Requires an explicit campaign ID and confirmation to write leads.

Instructions

Import leads into an explicitly named campaign. Safety — read-only: no; may consume SmartProspect credits: no; creates or modifies remote state: yes; can send email: no; destructive: yes. Endpoint: POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads. Creates remote state. Blocked in readonly mode. Requires an explicit campaign_id and confirm_import: true. Maximum 400 leads per call. Duplicate emails are removed locally (case-insensitive, trimmed) before the request and the number removed is reported. Never activates the campaign — use smartlead_update_campaign_status separately. Bypassing the global block list, unsubscribe list, duplicate protection or community bounce list is classified as destructive and requires unrestricted mode plus destructive confirmation. Never auto-retried: a retry could import leads twice.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
settingsNoSmartlead validation and duplicate-handling settings.
lead_listYesLeads to import (1-400). Duplicate emails are removed locally before sending.
campaign_idYesTarget campaign ID. Required — leads are never imported implicitly.
confirm_importNoMust be true. Acknowledges that leads will be written into the target campaign.
confirm_destructiveNoMust be true when any suppression or bounce-list validation bypass is enabled in settings.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
dataYes
errorNo
warningsYes
operationYes
paginationYes
credit_spendingYes
remote_mutationYes
Install Server

TDQS

A4.4/5.0
Behavior5/5

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

Despite annotations already indicating readOnlyHint=false and destructiveHint=true, the description adds rich context: endpoint, creates/modifies remote state, blocked in readonly mode, duplicate email handling (case-insensitive, trimmed), no auto-retry to avoid double imports, and detailed destructive bypass conditions. This goes far beyond annotations and fully discloses behavior.

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?

The description is appropriately sized for a complex tool, with useful front-loading of the core purpose and safety summary. It covers many behavioral aspects without being overly verbose, though the 'Safety' bullet list and the later 'Creates remote state' line are somewhat redundant.

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?

Given the tool's complexity (nested objects, 5 params, write operation, destructive potential), the description is exceptionally complete. It covers key gotchas: no auto-retry (idempotency), dedupe behavior, activation separation, destructive confirmation requirements, and readonly blocking. An output schema exists, so not explaining return values is acceptable.

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 the baseline is 3. The description repeats some parameter constraints (confirm_import must be true, max 400, duplicate removal) that are already in the schema. It adds minor context around the meaning of confirm_destructive and the local deduplication behavior, but does not substantially enhance understanding beyond the schema's own parameter descriptions.

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 opens with 'Import leads into an explicitly named campaign,' which is a specific verb+resource statement that clearly distinguishes it from sibling tools like smartlead_get_campaign_leads (retrieves) and smartlead_update_campaign_status (changes status). It also explicitly disambiguates by stating 'Never activates the campaign — use smartlead_update_campaign_status separately.'

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 description provides clear operational constraints: requires explicit campaign_id and confirm_import: true, max 400 leads, and blocks in readonly mode. It also points to the alternative tool for activation. However, it does not explicitly state when to prefer this tool over other lead-importing methods or list all sibling alternatives.

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

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/voriq-ai/smartlead-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server