Skip to main content
Glama

Send Bulk Messages (one account)

li_send_bulk_messages
Destructive

Send many messages from one account in a single run, one at a time in a single browser session, and wait for the run to finish. Supply exact text per recipient — never generated. Dry-run unless confirmSend=true; anyone on the do-not-contact list is refused. Returns a per-recipient outcome. To answer replies use li_send_reply instead: it returns at once and sends each from the account whose conversation it is.

FAST PATH: pass conversationUrn + participantMemberId (both come straight out of li_list_conversations / li_read_conversations_bulk) and the send addresses that thread directly — one navigation instead of three, ~30s per recipient cheaper, and the recipient is verified against the thread's own markup BEFORE typing. Replies should always carry them.

WITHOUT THE PAIR the route is decided at send time, not by you: where this install already holds the person's member id AND a stored conversation with them on this account, the send opens that conversation anyway; otherwise it opens their profile, which is the only route that can start a NEW conversation. The dry run marks those rows thread-fast-path-or-profile rather than guessing — both routes verify the recipient before typing, and which one runs can change between the preview and the send.

Budget ~60s per recipient without the fast path and ~30s with it, against a 30-minute limit; prefer batches of 15 or fewer, because a run that times out cannot tell you who was already messaged.

Input Schema

NameRequiredDescriptionDefault
itemsYesRecipients and their exact text, one per person; batches of 15 or fewer are safest
sessionIdNoSending account id (or use sessionLabel)
confirmSendYesMust be true to send; false returns a dry-run preview
sessionLabelNoSending account label
viaMessagingNoUse the /messaging search flow instead of the per-profile composer. Default FALSE. /messaging finds people by typing a NAME into a typeahead that exposes no slug or URN, so the recipient cannot be verified before sending; the profile composer navigates to /in/<slug>/. Opt in only when the profile composer is blocked.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / items / description
      Added value: +"Recipients and their exact text, one per person; batches of 15 or fewer are safest"
    • addedInput schema / properties / items / items / properties / message / description
      Added value: +"Exact text for this recipient, never generated"
    • addedInput schema / properties / items / items / properties / profileUrl / description
      Added value: +"Recipient profile URL"
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and openWorldHint=true, but the description goes well beyond them: dry-run semantics, the do-not-contact refusal, the fact that route selection happens at send time and may differ between preview and send, the 'thread-fast-path-or-profile' dry-run marker, and the warning that a timed-out run cannot report who was already messaged. That is exactly the behavioral disclosure a destructive bulk operation needs.

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?

Long but front-loaded and organized: purpose first, then FAST PATH and WITHOUT THE PAIR as scannable headers, then budget guidance. Nearly every sentence carries operational information, though the block is denser than a strict conciseness standard would demand.

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 destructive, long-running bulk tool with no output schema, the description covers prerequisites, confirmation, safety refusals, per-recipient timing, the 30-minute ceiling, and partial-failure risk. It only briefly says it 'returns a per-recipient outcome' without describing that payload, which is the one remaining gap.

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 adds real meaning beyond the schema by explaining the conversationUrn+participantMemberId pairing as a route selector, the consequence of omitting the pair (profile composer, the only route that can start a new conversation), and the rationale for viaMessaging (typeahead exposes no slug, so verification is impossible). It elaborates rather than replaces the schema, so a 4 rather than 5.

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?

The opening sentence names a specific verb (send), resource (messages), and scope (many, one account, one browser session, sequential), and explicitly contrasts itself with li_send_reply. An agent can distinguish it from li_send_message and li_send_reply without opening any 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?

Explicit routing rules: 'To answer replies use li_send_reply instead', dry-run unless confirmSend=true, do-not-contact refusal, and a whole FAST PATH / WITHOUT THE PAIR section explaining when each route is selected. It also gives operational guidance (batches of 15 or fewer, time budget) rather than leaving timing to inference.

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.

Resources