Skip to main content
Glama

send_message

Send text into a live Codex or Claude Code chat and press Enter, targeting an existing chat or starting a new one in a project. Returns a job ID for the reply.

Instructions

Send text into a chat and press Enter. chat: id or exact title of an existing chat. Or leave chat empty to start a new chat: in project (a project name from list_projects, or any folder path; Codex gets a project made for a new folder), or with no folder when project is empty too. codex / claude_code are driven through the desktop app; a split Claude window is fine (a chat already on screen is used in place, otherwise it opens in the focused pane). The view returns to the chats the user was on. claude_cli runs claude -p --resume headless with permission_mode. Returns a job_id. When the answer is ready it is saved; if you are a desktop chat it is also typed into your chat (notify_caller). Otherwise call wait_reply(job_id).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appYes
chatNo
textYes
projectNo
notify_callerNo
permission_modeNoauto

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses desktop-app driving, split-window reuse behavior, that the view returns to the user's prior chats, that claude_cli runs headless with permission_mode, and the notify_caller typing behavior. It omits permission/auth implications of permission_mode and any rate or concurrency limits.

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 core action is front-loaded and each sentence adds operational detail rather than filler. The chat/project paragraph is dense and could be tightened, but nothing is redundant.

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 6-param tool with no annotations and no output schema, the description covers the return value (job_id), where the answer lands, and the follow-up call. The only real gap is the implicit enumeration of app values and permission_mode semantics.

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 description coverage is 0%, so the description must compensate, and it explains chat, project, notify_caller behavior, and mentions permission_mode in the claude_cli context. It never cleanly enumerates the valid `app` values even though codex/claude_code/claude_cli are effectively them, leaving that mapping implicit.

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 gives a concrete verb+resource ('Send `text` into a chat and press Enter') and names the distinct app drivers, so an agent can distinguish it from siblings like wait_reply or read_chat without inspecting the schema.

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 provides explicit conditional guidance: leave chat empty to start a new chat in a project, or use no folder when project is empty, and it names the alternative path ('Otherwise call wait_reply(job_id)'). It stops short of stating when-not to use this tool or prerequisites, so it is not a full 5.

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