slack_post_message
Send a Slack message to a channel or DM. The response says who wrote
(_author) and where it landed (_channel: name, DM, shared externally).
⚠️ Long text is SPLIT, never truncated. Above ~4,000 characters the
text goes out as SEVERAL messages: the first one where you asked, each
later part threaded under it. Nothing is lost. The response then carries
ts_all (every ts, in order) and split_into next to ts — and ts is
always the FIRST part, the one to reuse to reply in the same thread.
A response with ts alone means one single message went out.
From a hosted agent's run, a message posted as the app
(author="app") outside a thread is filed under that agent: a member's
reply in its thread starts the agent again, with your message and their
reply. Post as the app what people may answer.
Read that before re-posting: a message can be deleted but NOT edited, so
a caller who wrongly concludes it was truncated posts a duplicate instead
of fixing one. split_into is what tells you, without reading the
channel back — which some procedures forbid as a source.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"channel": "<channel>",
"text": "<text>"
},
"name": "slack_post_message"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| _org | No | Org (id) de CET APPEL. `oto_list_orgs()`. | |
| text | Yes | Message text (Slack mrkdwn supported). | |
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| author | No | Who writes — `"me"` (as you, user token) or `"app"` (as the Slack app, bot token). Required when the workspace holds both tokens; with a single one, it is used and may be omitted. | |
| unfurl | No | `false` = Slack shows NO preview under this message, no link card and no media (every part, when it is split). Default `true` = Slack's usual previews. A procedure that says "no link previews" passes `false`. | |
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| channel | Yes | Channel ID (e.g. C0123456789), DM channel ID (D…), or an already-opened conversation. To DM a user by email, call `slack_find_user_by_email` + `slack_open_dm` first to get the channel ID. | |
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| _instance | No | Instance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`. | |
| thread_ts | No | Parent message ts to reply into a thread. |