Skip to main content
Glama

Salesbot - B2B outreach LinkedIn MCP Server with CRM and email

add_crm_contact

Idempotent

Create a contact and CRM lead without a LinkedIn profile — e.g. a person or e-mail the user found elsewhere. full_name is required; email, phone, company, position, website and notes are optional. Deduplicates by e-mail (an existing contact only gets empty fields filled). Links to crm_company_id when given, otherwise to a CRM company matched by the company name. Such contacts work for CRM, tasks and send_email; LinkedIn campaigns need a LinkedIn profile (use upsert_linkedin_contact). The user is responsible for having a lawful basis to store and contact the person.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
emailNo
notesNoStored as web_research on the contact (used to personalize messages).
phoneNo
companyNo
list_idNoLead list; defaults to 'CRM Imports'.
websiteNoCompany website.
locationNo
positionNo
full_nameYes
crm_company_idNoFrom add_companies_to_crm / list_crm_companies.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly=false, idempotent=true, destructive=false), and the description adds substantial behavior beyond them: deduplication by e-mail with fill-only-empty semantics, company-linking fallback logic (crm_company_id else match by name), which features the contact works with (CRM, tasks, send_email), and a lawful-basis responsibility note.

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?

Front-loaded with the key differentiator (no LinkedIn profile) followed by required/optional params, dedup rules, and linking logic. Every sentence carries information, though it is dense and slightly long for the number of distinct points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation tool with no output schema, the description covers purpose, dedup, linking, downstream compatibility, and legal basis well. The minor gap is undocumented location and list_id parameters, which is not enough to undermine the overall completeness.

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?

Schema coverage is only 40%, so the description must compensate. It does well by declaring full_name as required and listing email/phone/company/position/website/notes as optional, and by explaining the crm_company_id linking behavior, but it leaves location and list_id entirely unaddressed beyond the schema.

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 (Create) and resource (contact and CRM lead) with a precise qualifier ('without a LinkedIn profile'). It names the sibling it is not (upsert_linkedin_contact), so an agent can distinguish it from add_contacts_to_crm and upsert_linkedin_contact without opening either schema.

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?

Gives an explicit use case ('a person or e-mail the user found elsewhere') and an explicit alternative with its condition ('LinkedIn campaigns need a LinkedIn profile — use upsert_linkedin_contact'). When-to-use and when-not-to-use are both present.

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.