Actions

Call the updateLead MCP tool

Update ONE lead: status (new | active | contacted | qualified | lost | unsubscribed), notes, custom_fields, identity fields, add/remove tags, or fill a blank work email through a connected enrichment provider (positive_reply, not_a_fit, booked_in, no_engagement, off_platform_activity, follow_up_later, do_not_contact, customer). Get the lead_id from findLeads or getCampaignLeads. IMPORTANT: every tag except follow_up_later permanently ends the lead's active campaign sequences when added (no more automated sends), and removing it never restarts them. custom_fields REPLACES the whole object for this workspace (it is not merged key by key) - include every key you want to keep, not just the ones changing; it is per-workspace, never shared with other workspaces holding the same lead. first_name, last_name, email, position, headline, company and linkedin_url edit the single SHARED record for this person: the same person can be a lead in more than one workspace, and these fields change what every one of those workspaces sees for them, not just this one. company is freetext, resolved to a company record the same way CSV import resolves it (an empty string clears the company link). linkedin_url is the globally unique identifier for that person across all of Reachium, so setting it to a URL already used by a different lead fails instead of overwriting. enrich_email:true is vendor-credit spending and is two-step confirmation-gated; an existing email is never overwritten. Surface anything in the returned warnings array to the user.

Called through the Actions bridge: the response is that tool's own result, wrapped as { data: <tool result> } under HTTP 200. Billing, daily-cap, and confirm-step outcomes are embedded INSIDE data, never remapped to an HTTP status (see the templated /api/v1/actions/{toolName} operation above for the full protocol, and x-mcp-actions for this tool's machine-readable scope/cap/confirm_behavior fields). Authentication, request-shape, and optional idempotency-protocol failures still use their documented non-200 statuses.

post/api/v1/actions/updateLead

Request

  • Base URL: https://app.reachium.io
  • URL: https://app.reachium.io/api/v1/actions/updateLead
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Optional caller-generated key (8-200 characters: letters, digits, dot, underscore, colon, or hyphen). A final tool result is replayed for the same key and body. An ambiguous result remains 409 under that key; reconcile external state before using a new key. Reuse with a different body returns 422.

Request body

lead_idstring uuid required
status'new' | 'active' | 'contacted' | 'qualified' | 'lost' | 'unsubscribed'
notesstring

Replaces the lead notes. Pass an empty string to clear.

custom_fieldsobject

Replaces this workspace's entire custom_fields object for the lead (not merged) - include every key you want to keep.

first_namestring

Edits the shared leads record (affects every workspace with this lead).

last_namestring

Edits the shared leads record (affects every workspace with this lead).

emailstring

Edits the shared leads record (affects every workspace with this lead).

positionstring

Current job title. Edits the shared leads record.

headlinestring

LinkedIn headline. Edits the shared leads record.

companystring

Company name as freetext, resolved to company_id (creates a stub company if no match). Empty string clears it. Edits the shared leads record.

linkedin_urlstring

The globally unique LinkedIn URL identifying this person. Edits the shared leads record; fails if another lead already has it.

add_tagsstring[]
remove_tagsstring[]
enrich_emailboolean

true: confirmation-gated Prospeo/Apollo work-email lookup. Existing email always wins.

confirm_tokenstring

enrich_email only: return the exact token from the preview after user approval.

Response

The result of calling this tool.

dataunknown required
errorunknown required

Changes

No recorded changes to this operation across all 1 revision of this API.