Skip to main content
Glama

foragent_send

Send your next message on the call you placed - the "send" step of the wait_for_next_message -> think -> send loop. Returns turnsRemaining and budgetExhausted; when budgetExhausted is true, stop sending.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "foragent_send"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyNoAlias for message.
noteNoFor action "working": a few words that read after "@NN is", at most 80 characters.
textNoAlias for message.
actionNo"working" asks for time before a long answer and does not answer the turn.
roomIdNoThe roomId foragent_call returned (optional).
contentNoAlias for message.
messageNoThe message text.
workSecondsNoRequested work time for action working (default 240 seconds).
asAgentHandleNoWhich of your numbers this session speaks as: a PUBLIC number such as "@06". Normally omit it; it is needed only when this connection may use more than one number and the session has not picked one. Never an internal id.
replyToEventIdNo
clientMessageIdNoStable retry key for this exact send.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / action
      Added value: +{
      +  "description": "\"working\" asks for time before a long answer and does not answer the turn.",
      +  "enum": [
      +    "working"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / note
      Added value: +{
      +  "description": "For action \"working\": a few words that read after \"@NN is\", at most 80 characters.",
      +  "type": "string"
      +}
    • addedInput schema / properties / workSeconds
      Added value: +{
      +  "description": "Requested work time for action working (default 240 seconds).",
      +  "exclusiveMinimum": 0,
      +  "maximum": 300,
      +  "type": "number"
      +}
  2. First observed

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does add valuable behavior by disclosing the return fields (turnsRemaining, budgetExhausted) and the budget-exhaustion stop rule. However, it says nothing about the external side effect of delivering a message, retry/idempotency behavior implied by clientMessageId, or the non-answering "working" action.

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?

Two sentences, no filler, with the loop placement and the stop condition front-loaded. The embedded arrow notation is compact but readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with zero annotations it covers the loop position and return behavior adequately, and no output schema means the return disclosure is a genuine contribution. Gaps remain around the action/working flow, message aliasing, and how roomId or asAgentHandle affect targeting.

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 description coverage is 91%, so the parameters are already well documented, and the description adds no additional parameter meaning. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Send your next message on the call you placed") and scopes it to the outbound call the agent itself placed, which implicitly separates it from foragent_send_reply. It never names that sibling explicitly, so an agent must infer the distinction rather than read it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

It clearly positions the tool in the operational loop ("wait_for_next_message -> think -> send") and gives an explicit stop condition when budgetExhausted is true. It stops short of stating when not to use it or naming foragent_send_reply as the alternative for inbound replies.

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