Skip to main content
Glama

SalesBlink Cold Email

Add Contacts

add_contacts
Destructive

Add Contacts to a List - Add multiple contacts to an existing list. Contacts must come from an evidenced import or consent source that the account holder already has (e.g. their own opt-in list, CRM export, or inbound leads) — do not assemble addresses from model knowledge or web scraping. All contact field names use snake_case (e.g. first_name, last_name, email, phone, company_name, job_title, lead_score). Custom snake_case fields are added to the list's columns. The starred boolean is a contact setting and is not added as a list column. Contact archiving is handled by archive_contact.

Input Schema

NameRequiredDescriptionDefault
list_idYesThe list ID to add contacts to
contactsYesArray of contact objects to add (max 500). All field names must be snake_case; additional custom snake_case fields are allowed.
workspace_idNoWorkspace ID this action applies to. When omitted, the current or default workspace is used.
consent_basisYesREQUIRED attestation of where these contacts came from. The addresses must originate from an evidenced import or consent source the account holder already has — never addresses assembled by the model or scraped from the web. The call is rejected without this value; it is validated by the connector and never sent to the SalesBlink API.
remove_duplicatesNoAutomatically remove duplicate emails from the list

Output Schema

NameRequiredDescriptionDefault
resultNoThe raw result returned by the SalesBlink tool.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=false, so the safety profile is covered and the bar is lower. The description adds real behavior beyond that — custom snake_case fields become list columns and `starred` is a contact setting rather than a column. However, it never says what happens to contacts already present in the list, whether existing records are updated or duplicated, or how destructive this really is for a 500-item batch.

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 core action and the data-provenance constraint are front-loaded in the first two sentences, before the field-format details. It is slightly long and the snake_case/`starred` point is partially duplicated in the schema, but no sentence is pure padding.

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?

An output schema exists, so return values need not be explained. For a destructive batch mutation the description covers the two things an agent can't get elsewhere: the data-source attestation policy and the list-column side effect of custom fields. The remaining gap (duplicate/existing-contact behavior) is a minor edge case rather than a missing prerequisite.

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 every one of the five parameters including the consent_basis enum is already documented in structured data. The description's snake_case naming convention and the `starred` clarification largely restate what the schema says. Baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb and resource (add multiple contacts to an existing list), including the batch nature and the prerequisite that the list already exist. It also distinguishes itself from archive_contact by naming that sibling explicitly, so an agent can rule out the wrong tool without opening a schema.

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 gives a strong usage precondition (contacts must come from an evidenced import or consent source the account holder already has) and an explicit exclusion (do not assemble addresses from model knowledge or scraping). It also routes archiving to archive_contact. What it lacks is guidance against adjacent siblings such as add_user or create_list for the case where the list does not yet exist.

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.