Skip to main content
Glama

Add leads to campaign

add_leads_to_campaign

Move leads this account owns into a campaign this account owns, by explicit id. Updates membership only — sends nothing. Opted-out and suppressed leads are REJECTED with per-lead skip reasons even when listed explicitly; leads already in the target are deduplicated; the response includes the campaign's final lead count read back from the database. To pick the audience by filter instead of by id, use select_and_attach_leads (same attach semantics, driven by search_leads filters). If the target campaign was already reviewed, its earlier approval is stale (the launch step recounts recipients and refuses a token approved for a smaller audience), so a fresh review_campaign_readiness is required before launching.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
lead_idsYesLead ids to move (from find_lead, list_leads or search_leads).
campaign_idYesThe destination campaign.
idempotency_keyNoOptional but recommended. Retrying the same key returns the same result instead of re-running the move; reusing it with different arguments is rejected as idempotency_conflict.

TDQS

A4.9/5.0
Behavior5/5

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

Although annotations are present, the description adds significant behavioral detail not expressed there: it sends nothing, it rejects opted-out/suppressed leads with per-lead skip reasons, it deduplicates existing leads, the response returns a final campaign count, and prior launch approval becomes stale. No annotation is contradicted.

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 front-loaded with the core operation, then each sentence adds a specific behavioral or workflow fact: send semantics, rejection/dedupe behavior, read-back response, filter-based sister tool, and stale-approval warning. There is no filler or repetition of schema or annotation content.

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 though there is no output schema, the description covers response contents (final lead count), failure/skip specifics, idempotency semantics (already-there leads are deduplicated; idempotency key appears in schema), and a prerequisite workflow (re-review before launch). For a tool of this complexity, an agent has enough context to call it and handle the outcome correctly.

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 schema already provides 100% parameter coverage, so a baseline of 3 applies. The description adds value beyond the schema by placing an account-ownership constraint on both campaign_id and lead_ids, and by emphasizing that lead_ids are selected explicitly rather than by filter. This meaningfully supplements the parameter schemas without repeating them.

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 and resource: "Move leads this account owns into a campaign this account owns." It also explicitly says "Updates membership only — sends nothing," which precisely distinguishes this attachment action from messaging actions, and it names the sibling select_and_attach_leads as the non-identical alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to choose this tool versus the alternative: use select_and_attach_leads to pick the audience by filter, while this tool is for explicit IDs. It also gives a clear after-condition warning: a previously reviewed campaign needs a fresh review_campaign_readiness before launching because the old approval is stale.

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.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, and the descriptions explicitly differentiate similar pairs such as list_leads vs search_leads vs find_lead, and add_leads_to_campaign vs select_and_attach_leads. A few read-only tools like analyze_lead_source, get_campaign_status, and recommend_followup_campaign overlap in what they report, but their overall goals remain distinguishable.

Naming Consistency4/5

Names are consistently lowercase snake_case with verb-first phrasing, and most follow a verb_noun pattern such as create_campaign_draft, list_leads, and pause_campaign. There are minor structural deviations like add_leads_to_campaign, list_from_addresses, and select_and_attach_leads, but they remain predictable and readable.

Tool Count4/5

18 tools is slightly above the typical well-scoped range, but the count is defensible for a campaign lifecycle covering lead import, search, selection, campaign creation, review, launch, pause, and analytics. Each tool has a meaningful role, though the set feels a bit heavy rather than tightly minimal.

Completeness3/5

The surface covers lead ingestion, enrichment, filtering, attaching, campaign draft creation, readiness review, launch, pausing, and monitoring. However, there are notable lifecycle gaps: no update or delete operations for campaigns or leads, no way to remove leads from a campaign, and no explicit resume operation after pausing.

Resources