send_message
Send role-addressed messages to coordinate coding-agent sessions, with tracked obligations, proposals, replies, and work statuses.
Instructions
Send a message. 'to' is one role, a LIST of roles, or '' on its own (every other role); sending to yourself is refused. A multi-recipient message is ONE message (one body, id, thread and set of acknowledgements; read state is per recipient). Only kind='proc' and kind='status' may go to several roles on their own; a reply (reply_to) of another kind to a multi-recipient message may go to several roles, but only to that message's sender and recipients. action_required=true is refused for several recipients (a debt has one owner). 'addenda' ({role: text}) adds a per-recipient tail, seen as 'addendum'. 'kind' is bug/feat/proc/status/question/answer ('answer' with reply_to); 'work_status' is proposed/in_progress/done_local/needs_you/done/blocked, moved later with set_work_status. A formal decision → kind='proc' (surfaces in awaiting_ack); work to do → action_required=true (surfaces in open_obligations, closed via resolve_message). kind='proc' REQUIRES two explicit answers (omitting either is refused, null is valid): (1) 'pin_key' — the pin this proposal changes, or null. A proposal with a pin_key is found by list_messages(pin_key=...), retired by the pin_set it settles, and refused while another round on that key is open. 'voters' then declares whose 'agree' pin_set will require: '' or a list of roles; others still receive it and may vote but do not block. In a hosted channel a pin proposal must be addressed to every other role and 'voters' is required; in stdio mode neither is enforced, and without 'voters' pin_set accepts a fresh 'agree' from any other role. (2) 'about_message_id' — the message this one is about (a nudge), or null. A nudge stays out of awaiting_ack and is retired when its target is voted on, superseded or deleted. decision_requested=false opens a proposal for reading, not voting (it stays out of awaiting_ack). 'topic' is at most 80 characters; addenda values at most 4000. For a body too long for one call, use upload_content + seal_content and pass body_ref= instead of 'body'. Returns {id, created_at}, plus 'recipients' and 'voters' when set.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| body | No | ||
| kind | No | ||
| topic | Yes | ||
| voters | No | ||
| addenda | No | ||
| pin_key | No | ||
| body_ref | No | ||
| reply_to | No | ||
| work_status | No | ||
| action_required | No | ||
| about_message_id | No | ||
| decision_requested | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||