Skip to main content
Glama

schedule_message

Queue a Signal message for future delivery and store it locally; it sends only when the scheduled runner or CLI processes due jobs.

Instructions

Save a text message in the local store to be sent at a future time. Give exactly one target: recipient (E.164 phone number, for a direct message) or group_id (for a group). message (required): the text. send_at (required): local time as 'YYYY-MM-DDTHH:MM[:SS]' or 'YYYY-MM-DD HH:MM[:SS]' (no timezone); must be in the future. Nothing is sent at that time by itself: a due message goes out only when run_scheduled_messages (or the signal-mcp run-scheduled CLI, e.g. from cron) runs. Returns {job_id, send_at, status: 'scheduled'}. Use list_scheduled_messages to review jobs and cancel_scheduled_message to cancel one; use send_message or send_group_message to send now.

Input Schema

NameRequiredDescriptionDefault
messageYesMessage text to send
send_atYesWhen to send — ISO datetime string (e.g. '2024-06-01T09:00:00' or '2024-06-01 09:00')
group_idNoGroup ID (for group messages). Mutually exclusive with recipient.
recipientNoPhone number in E.164 format (for DMs). Use group_id for group messages.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.33.3

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only record the write/non-idempotent/non-destructive profile; the description adds the critical behavior that nothing is actually sent at the scheduled time unless run_scheduled_messages (or the CLI) runs. It also discloses persistence to the local store and the exact return payload, which annotations cannot convey.

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?

The purpose and target rule are front-loaded, and the behavioral caveat and alternatives are grouped sensibly at the end. It is longer than strictly necessary ('message (required): the text' partly echoes the schema), but almost every sentence carries distinct, load-bearing information.

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?

With no output schema, the description compensates by stating the return shape {job_id, send_at, status}, the send-time dependency, and the target constraint. An agent has everything needed to schedule, review, and understand the deferred-send model.

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 adds genuine constraints beyond the schema: send_at is local time with no timezone, accepts two concrete formats, and 'must be in the future'. It also restates the mutually exclusive target rule with the E.164 requirement.

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 description opens with a specific verb+resource+mechanism: 'Save a text message in the local store to be sent at a future time.' It explicitly distinguishes itself from immediate-send siblings by naming send_message and send_group_message as the 'send now' alternatives, so an agent can route correctly 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?

It names the full lifecycle siblings and the condition that selects each: list_scheduled_messages to review, cancel_scheduled_message to cancel, send_message/send_group_message for immediate sending. It also states the target-selection rule ('exactly one target: recipient or group_id'), removing ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.