slack
slack.
slack automation via a bot token. send messages, read history, list channels, reactions, dms, user lookup.
setup & usage
oto n'a pas encore d'app Slack publiée (« connecter en un clic ») : tu crées ta app dans ton workspace et tu colles ses tokens ici. Une manœuvre unique par workspace, ~5 minutes.
xoxb-) : lire les canaux, poster sous l'identité de l'app. C'est le token nominal.xoxp-) : poster en ton nom, et chercher (search:read n'existe qu'en user token). Optionnel.1. va sur api.slack.com/apps → Create New App → choisis From a manifest (pas « AI agent » ni « Starter app » : ce sont des gabarits d'app conversationnelle, sans rapport)
2. choisis le workspace. L'éditeur qui s'ouvre est déjà rempli d'un exemple (display_information: name: Demo App) : sélectionne tout et remplace-le — coller par-dessus sans vider soude les deux manifestes et Slack refuse (« Nested mappings are not allowed in compact mappings »). Le manifeste à mettre à la place, qui déclare déjà tous les scopes dont les outils oto ont besoin :
```yaml
display_information:
name: Oto
description: Lit et écrit dans Slack pour votre agent Oto
features:
bot_user:
display_name: Oto
always_online: false
oauth_config:
scopes:
bot:
- channels:read
- channels:history
- channels:join
- groups:read
- groups:history
- im:read
- im:history
- im:write
- mpim:read
- mpim:history
- users:read
- users:read.email
- chat:write
- reactions:write
- files:read
user:
- search:read
- chat:write
settings:
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
```
3. Create, puis Install to Workspace et autorise
4. dans OAuth & Permissions, copie le Bot User OAuth Token (xoxb-) et, si tu veux poster en ton nom, le User OAuth Token (xoxp-)
5. colle-les ici — rien d'autre à configurer
*(sans manifeste : Blank app, puis déclare les mêmes scopes à la main dans OAuth & Permissions avant d'installer. Le manifeste évite exactement cette étape.)*
⚠️ un scope ne remplace pas l'appartenance au canal. sans appartenance, Slack répond not_in_channel — ce qui ressemble à tort à un problème de token. deux cas, et un seul est automatisable :
slack_join_channel fait entrer l'app toute seule (c'est à quoi sert le scope channels:join du manifeste ci-dessus)/invite @Oto dans le canal — oto ne peut pas le faire à sa place, et le dit au lieu de laisser croire à une panneréférence Slack : créer une app depuis un manifeste · installer avec oauth v2
un token Slack est émis par installation : deux workspaces = deux jeux de tokens indépendants. Refais l'installation dans le second workspace (le même manifeste), puis pose ses tokens comme un second compte nommé du connecteur (un nom par workspace, ex. otomata, client-x).
_account="<nom>" sur l'outil (oto_identity(op='list') pour les lister)oto_identity(op='set', connector='slack', identity_id='<nom>')envoie et lis des messages slack en ton nom depuis claude.
slack_post_messageslack_find_user_by_email puis slack_open_dm puis slack_post_messageslack_read_history (messages de premier niveau ; oldest/latest pour ne lire qu'une fenêtre)slack_read_thread — les réponses d'un fil, que slack_read_history ne rend pas (il n'en montre que le compteur)slack_join_channel (canaux publics uniquement)slack_add_reactionoutils
usage
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.pipx install oto-cli then oto slack …