Skip to main content
Glama

send_message

Send a text message to a single agent for 1:1 communication, dispatching work, or relaying status updates.

Instructions

Send a text message addressed to a single agent.

When to use: 1:1 communication, dispatching work, relaying a status update, asking a peer a question. Prefer broadcast for fan-out to many agents, post_to_channel for topical group coordination, and post_task (or post_task_auto) when the recipient should track state-machine progress (accept/complete/reject) rather than a free-text message.

Behavior: stores the message with status='pending' and notifies any matching webhook subscribers (message.sent event). The recipient sees it on its next get_messages call (which auto-marks read unless peek=true). Content is encrypted at rest if RELAY_ENCRYPTION_KEY is set. Caps at RELAY_MAX_PAYLOAD_BYTES (default 64 KB). Auth: sender must present a valid token whose row matches from.

Returns: { success: true, message_id, from, to, priority, note }. The new message is stored with status='pending' until the recipient drains it.

Errors: AUTH_FAILED (token missing/mismatched), SENDER_NOT_REGISTERED (caller's agent row absent), PAYLOAD_TOO_LARGE, RATE_LIMITED.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesRecipient agent name
fromYesSender agent name
contentNoMessage content (max 64KB by default; see RELAY_MAX_PAYLOAD_BYTES). Alias: `message`.
messageNoAlias for `content` (parity with the REST /api/send-message endpoint + the agent-team SendMessage tool).
deadlineNoADR-0011: optional ISO8601 deadline for an 'obligation'. Overdue is reported strictly past this instant; omit to use the tunable default bound (RELAY_OVERDUE_SECONDS). Ignored for log/ask.
priorityNoMessage prioritynormal
agent_tokenNoYour agent token (from register_agent response). Optional here — also resolvable from RELAY_AGENT_TOKEN env or X-Agent-Token header.
dispositionNoADR-0011 disposition: 'log' (default, FYI, never overdue) | 'ask' (expects a reply/resolve) | 'obligation' (an action owed; pair with optional `deadline`). Overdue is report-only — query it via get_outstanding.log
Behavior5/5

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

With no annotations, the description fully discloses behavior: stores message with 'status=pending', notifies webhook subscribers, recipient sees it on next get_messages, auto-marks read unless peek=true, encryption at rest, payload caps, and auth requirements. It also lists probable errors, making the tool's behavior transparent.

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?

The description is well-structured with clear sections: 'When to use', 'Behavior', 'Returns', 'Errors'. It is concise yet comprehensive, with every sentence providing value. No redundancy or wasted words.

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 a tool with 8 parameters, no output schema, and no annotations, the description is remarkably complete. It explains the return format, error cases, storage behavior, encryption, and payload limits, giving an agent all necessary context to invoke it correctly. Alternatives and usage scenarios are also covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented in the schema. The description does not add significant new semantics beyond the schema; it mentions the `content`/`message` alias and the disposition field, but these are already in the schema descriptions. Thus the baseline score of 3 is appropriate.

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 'Send a text message addressed to a single agent,' using a specific verb and resource. It then distinguishes from siblings by explicitly naming `broadcast`, `post_to_channel`, and `post_task` as alternatives for different scenarios.

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?

The 'When to use' section provides explicit guidance: 1:1 communication, dispatching work, relaying updates, asking questions. It also gives clear exclusions and alternatives, such as 'Prefer `broadcast` for fan-out to many agents, `post_to_channel` for topical group coordination, and `post_task` when the recipient should track state-machine progress.'

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Maxlumiere/bot-relay-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server