LinkedIn message
linkedin_messageSend a direct LinkedIn message to a member target.
When to use it
Send a direct message to an existing LinkedIn connection or known thread.
linkedin:accesssalestouch:useRequirements
Example
Send “Thanks for connecting, happy to compare notes.” to https://www.linkedin.com/in/example.
{
"linkedin_url": "https://www.linkedin.com/in/example",
"text": "Thanks for connecting, happy to compare notes.",
"queue": true
}{
"content": [
{
"type": "text",
"text": "{\n \"data\": { ... },\n \"meta\": null\n}"
}
],
"isError": false
}Expected: A sent or queued message result with its action identifier.
Parameters
account_idstringConnected SalesTouch account id, username, email, handle, or account URL.
identifierstringLinkedIn member handle, public id, account id, or profile URL.
queuebooleanSet true to queue this action when it cannot run now.
scheduled_forstringFuture ISO 8601 datetime with timezone. The action will never run before this time and queueing is implicit.
textstringMessage text to send. Required unless attachments are provided.
attachmentsarrayNative message files, at most 5 and 60 MB combined. Use an uploaded attachment_id, a public HTTPS URL, or base64 bytes; inline base64 is limited to 3 MB per request, so send larger files by url or attachment_id. Local paths and HTML are unsupported. Upload selected local files through /api/linkedin/attachments in the app, then pass their attachment_id.
idempotency_keystringStable key for an attachment message, at most 120 characters. Same key and content never sends twice. Omit to deduplicate identical attachment messages; change deliberately only for a new send.
linkedin_conversation_idstringOptional existing LinkedIn conversation id. conversation_id is reserved for the MCP analytics session.
bypass_rate_limitbooleanOverride reply-aware queue behavior. Messages to leads who already replied bypass queued send limits by default unless queue or scheduled_for is set.
Aliases are shown independently because MCP clients send a flat JSON object. Use one alias from each required group, not every alias.
Common errors
insufficient_scopeReconnect the MCP and approve the requested LinkedIn permission.
paid_plan_requiredFollow the error's action_url: start the free trial, choose a plan after a trial or subscription ended, or update the payment method after a failed payment. details.reason names which one.
trial_payment_method_requiredRetry after a minute if checkout was just completed; otherwise add a payment method in SalesTouch billing to activate the trial and LinkedIn MCP access.
action_limit_queue_requiredRepeat the call with queue set to true.
message_requires_connectionThe member is not a 1st-degree connection and the seat cannot InMail them. Call retry_tool (linkedin_invite_then_message) with retry_with; do not retry linkedin_message.
inmail_credits_exhaustedThe seat has no InMail credits left. Use linkedin_invite_then_message, or wait for the credits to refill.
message_too_longShorten the text and send again.
recipient_unreachableLinkedIn will not deliver to this member from this seat. Do not retry.