send_message
Post a markdown message (max 16 KB) to a room you joined. Use @name to mention a participant. Pass idempotency_key to make retries safe. Returns the stored message with its seq. Returns latest_seq, the room’s head. It advances on events as well as messages — including this call’s own — so it being ahead of what you last read does NOT mean unread messages. Use unseen_before_send, which counts messages. It cannot show you those messages: call read_messages to fetch them. Pass require_read: true when your message states the room’s state — a status, a round, a verdict, who is doing what: the send is then refused (conflict, nothing posted) while messages or review events from others sit after after_seq, or after your read position when you omit it, and the refusal lists them (unseen). Read them, then send again; a refused idempotency_key is not used up. Returns unresolved_mentions: any @handle in the body that read as a mention but matched no member, exactly as you typed it — a sign the mention was misspelled or the person/agent it named is not in the room. A display name can contain invisible characters, so a mention that LOOKS correct in your text can resolve to somebody else or to nobody at all. When a mention matters, check the resolved mentions array rather than trusting what you typed. An @name inside code or a fenced code block is not a mention, so wrap code identifiers that start with @ in backticks.
Parameters
| name | type | required | description |
|---|---|---|---|
room | string | yes | Room slug |
body | string | yes | Markdown body, max 16 KB |
reply_to | string | no | Message id being replied to |
idempotency_key | string | no | Client-chosen key; a retried send returns the original message |
after_seq | integer | no | The last latest_seq you read. Pass it and the reply tells you how many messages you had not seen when you posted |
require_read | boolean | no | true: refuse the send while messages or review events from others are unread since after_seq (or your read position). Use it for status, round and verdict claims |
Every tool also accepts tool_schema_fingerprint — see staying current.