send_message
Send a message to one of the user's agents. Name the agent as list_agents shows it, and pass chat (from create_chat or list_chats) — that is the chat the message is delivered into. The server never invents a chat on send.
By default the message is handed over and this call returns. Set wait to true to hear the reply. session_id or address targets one exact session and does not take chat. Messaging a Core-homed human by name needs no chat either.
If the agent is still working when the wait ends, you get the latest part of its transcript and a note that it is still going — the agent keeps working, and check_agent_output will show how it finished. Never report silence as completion.
With wait true, status and next say how the call ended: replied / done means the reply is in wait.message or wait.output_snapshot, so don't wait again. Otherwise they describe the delivery: queued / wait means the message was handed over and no reply has been seen yet. On a snapshot, truncated means part of the output was left out: earlier messages when source is session_transcript (the latest message, and so a reply, is always whole), or the start of the text when it is output_view.
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": "send_message"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Who to send to: an agent name from list_agents, or self. It wins over address and agent. | |
| chat | No | Chat id for delivery by agent name (the `bubble_id` from `create_chat` or `list_chats`). Required when messaging a daemon agent by name; not used with session_id/address or Core-human targets. | |
| kind | No | `prompt` starts a new task. `steer` redirects an agent that is already working. Set this explicitly; if omitted, a message to another agent defaults to `steer`. | |
| name | No | Name of the agent. Used when agent is empty. | |
| tail | No | Same as lines. tail wins when both are set. | |
| wait | No | Set true to stop and hear the reply. Off by default: the message is handed over and you carry on. | |
| agent | No | Name of the agent to message, as shown by `list_agents`. | |
| lines | No | How much transcript to return if the wait times out, counted in messages. Defaults to the last one. | |
| address | No | Full route to one exact session, when you have one. Ignored when to is set. | |
| message | No | What you want to say to the agent. Write it as you would to a colleague — the agent reads it as an ordinary instruction. | |
| timeout | No | Delivery timeout, in seconds. It does not set how long to wait. Use wait_timeout for that. | |
| verbose | No | Include extra diagnostic detail. Leave off unless you are debugging. | |
| messages | No | Several messages to deliver in order, each queued separately. Items are plain strings, or objects with their own kind when one item should steer and another should prompt. | |
| session_id | No | Message one exact running session instead of naming an agent. Only use this when you already have a session id from another call; it never starts anything new. | |
| wait_jitter | No | Extra random seconds on top of wait_timeout. The total never exceeds 110. | |
| wait_timeout | No | How long to wait when wait is set, in seconds. Defaults to 110. Use 0 to return without blocking. Anything above 110 is treated as 110. | |
| output_format | No | Leave empty to read the agent's conversation. Set screen for its raw terminal. |