Skip to main content
Glama

Salesbot - B2B outreach LinkedIn MCP Server with CRM and email

update_contact

Idempotent

Use only for contact details (e-mail, phone, position). For pipeline stage use set_deal_stage; for custom fields use set_lead_fields. Update a lead's contact details — email, phone, location, company, position, headline or company_info. Use to enrich a lead (e.g. save an email address you found). company_info is a short plain-text description of what the lead's company does (1–2 sentences, max 400 characters, from the company's own website, e.g. via read_company_website); it feeds the {{company_info}} message variable and must be factual — never guess it. web_research is longer free-text research about the person/company (what the company does, the verified offer/CTA, key facts from the website; max 4000 characters) that the message writer reads as background facts; it replaces the previous web_research and keeps the rest of the profile. Only the fields you pass are changed; omit the rest. Does not create contacts.

Input Schema

NameRequiredDescriptionDefault
emailNoEmail address. Optional.
phoneNoPhone number. Optional.
companyNoCompany name. Optional.
headlineNoLinkedIn-style headline. Optional.
locationNoCity / location. Optional.
positionNoJob title / position. Optional.
contact_idYesUUID of the contact
company_infoNoShort factual description of what the lead's company does (max 400 chars, plain text, no links). Used by the {{company_info}} message variable. Optional.
web_researchNoFactual research about the person/company for writing personalized messages: what the company does, verified offer/CTA, key facts (max 4000 chars). Replaces the previous web_research. Optional.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / web_research
      Added value: +{
      +  "description": "Factual research about the person/company for writing personalized messages: what the company does, verified offer/CTA, key facts (max 4000 chars). Replaces the previous web_research. Optional.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / company_info
      Added value: +{
      +  "description": "Short factual description of what the lead's company does (max 400 chars, plain text, no links). Used by the {{company_info}} message variable. Optional.",
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare non-destructive, idempotent writes, and the description adds real semantics on top: partial-update behaviour ('Only the fields you pass are changed; omit the rest'), replacement semantics for web_research ('it replaces the previous web_research and keeps the rest of the profile'), and provenance constraints ('never guess it'). These are exactly the traits annotations cannot express.

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 disambiguation is the strongest part and comes first. Slightly verbose: the field list is restated twice ('contact details (e-mail, phone, position)' then 'email, phone, location, company, position, headline or company_info'), and the web_research/company_info paragraphs are dense, though each sentence carries substantive information.

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 9-param mutation with no output schema and rich annotations, the description covers routing, partial-update semantics, field intent, and constraints. The only gap is what the response looks like (e.g. whether the updated contact is returned), which is minor given the idempotent, non-destructive profile.

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 100%, so the baseline is 3; the description earns above that by explaining intent for the two non-obvious fields — company_info as 1–2 factual sentences feeding the {{company_info}} message variable, and web_research as background facts the message writer reads. It does not add per-field detail for the plain fields (email, phone, position), which the schema already covers adequately.

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+resource ('Update a lead's contact details') and enumerates the fields, while explicitly carving out the neighbours set_deal_stage and set_lead_fields. An agent can distinguish it from ~70 siblings without opening the 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 explicit routing rules up front ('Use only for contact details... For pipeline stage use set_deal_stage; for custom fields use set_lead_fields') plus a positive usage case ('Use to enrich a lead') and an exclusion ('Does not create contacts').

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.