Skip to main content
Glama

Messages Due To Send

li_due_messages
Read-only

List contacts whose next message step is DUE now (scheduledAt ≤ now, still pending) — usually waiting for the account's sending hours, a hold, or a free browser. Each row has the profileUrl, account, step kind, and the exact prefilled text. The worker auto-sends these; a routine can also pull them to bulk-send. DB-backed and instant; up to limit rows (default 100), and truncated says when there are more. Everything with a FUTURE send time is li_scheduled_steps; accepted people with no opener yet are li_accepted_pending_message.

Input Schema

NameRequiredDescriptionDefault
limitNoMost rows to return (default 100); `truncated` says when there are more
sessionIdNoLimit to one account by id (li_list_accounts). Needed (or sessionLabel) when you have more than one account.
sessionLabelNoLimit to one account by label, LinkedIn name, profile slug or member id. Needed (or sessionId) when you have more than one account.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / limit / description
      Added value: +"Most rows to return (default 100); `truncated` says when there are more"
    • changedInput schema / properties / sessionId / description
      Previous value: -"Scope to one account id"New value: +"Limit to one account by id (li_list_accounts). Needed (or sessionLabel) when you have more than one account."
    • changedInput schema / properties / sessionLabel / description
      Previous value: -"Scope to one account label (omit for all accounts)"New value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Needed (or sessionId) when you have more than one account."
  2. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new context: it is DB-backed and instant, rows are capped by limit with a truncation signal, and each row carries prefilled send text. It does not say what happens to rows the worker has already claimed, which is the one remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the definition of 'due', then row contents, then operational notes, then sibling routing. Five dense sentences with no filler; each sentence adds a distinct fact.

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?

There is no output schema, and the description compensates by naming the row fields (profileUrl, account, step kind, prefilled text) and the truncation flag. Combined with the sibling disambiguation, an agent has everything needed to call this correctly and interpret a response.

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, but the description goes slightly beyond by restating the limit/truncated contract and by signaling that account scoping (sessionId or sessionLabel) is needed when multiple accounts exist. The sessionId/sessionLabel disambiguation is largely carried by the schema text, so this lands just above baseline rather than at full credit.

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 and resource with precise scope: contacts whose next message step is DUE now, defined mechanically as scheduledAt ≤ now and still pending. It further names the two nearest siblings (li_scheduled_steps and li_accepted_pending_message) and the boundary condition that distinguishes each, so an agent can route 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?

Explicitly frames both consumers ('the worker auto-sends these; a routine can also pull them to bulk-send') and draws hard exclusions: future send times belong to li_scheduled_steps, accepted people with no opener belong to li_accepted_pending_message. When-to-use and when-not-to-use are both stated.

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