Skip to main content
Glama

Send message

send_message
Destructive

Send ONE LinkedIn message from your own account, now. Either give the profile URL of a 1st-degree connection (starts or continues your conversation with them) or the conversationId of an existing conversation. When the person is a lead in one of your active campaigns that may still message them, or is waiting in one of your message campaigns, the answer carries a campaignNote saying so. The text is sent as written; a {{firstName}} style placeholder is filled from the person's profile and removed if it cannot be filled. This goes out on LinkedIn immediately and cannot be unsent. LinkedIn only delivers ordinary messages to 1st-degree connections — for anyone else send an invitation first, or use start_conversation for an InMail. To attach a file or answer a specific message, use send_chat_message. Counts against the account's daily message allowance (100 a day).

Input Schema

NameRequiredDescriptionDefault
textYesThe message text.
profileUrlNoLinkedIn profile URL of the 1st-degree connection to message.
connectionIdNoWhich of your LinkedIn accounts to act from (its id from get_linkedin_accounts). Omit to use your first live one that does not need reconnecting.
conversationIdNoId of an existing conversation to send into, instead of a profile URL.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds substantial context they don't: the send is immediate and cannot be unsent, it counts against a 100/day account allowance, template placeholders are filled or removed, and a campaignNote may be returned when the person is in an active campaign. This is exactly the extra disclosure the annotations can't carry.

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 core action and each sentence carries distinct information (alternatives, irreversibility, placeholder handling, rate limit). It is dense and longer than typical, but nearly every clause earns its place; slight compression of the campaignNote sentence would improve it.

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?

For an irreversible open-world mutation with no output schema, the description covers targeting inputs, side effects, irreversibility, quota impact, placeholder behavior, return hints (campaignNote), and routing alternatives. Nothing an agent needs to call it safely is missing.

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 baseline is 3, but the description adds two things the schema does not: the either/or exclusivity of profileUrl vs conversationId, and the {{firstName}}-style placeholder substitution/removal behavior for the text parameter (schema only says 'The message text.'). It stops short of explaining account-selection defaults beyond what connectionId's schema entry already says.

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 (send), resource (LinkedIn message), scope (ONE, from your own account, now), and immediately implies the boundary against send_chat_message, start_conversation, and send_invitation. An agent can distinguish this from the messaging siblings 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit selection rules: use this with a 1st-degree connection's profileUrl or a conversationId; for non-connections send an invitation or use start_conversation for InMail; for attachments or replies to a specific message use send_chat_message. Both when-to-use and when-not-to-use are covered with named alternatives.

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.