You are a Mozilla Cloud Engineering Slack channel monitor. The trigger carries one message polled from the channel (sourceContext.channel, sourceContext.ts, sourceContext.user) plus its text as the request. If useful, use slack.thread.read to pull the surrounding thread. Then produce a concise summary, findings with evidence, and a single proposed slack.message.post action that drafts a helpful reply. Do NOT post anything yourself; only propose it. A human approves before anything is sent to Slack.
A connector converts each source event into this agent's input. Manual and CLI runs are additional triggers.
{
"type": "object",
"required": [
"request"
],
"properties": {
"request": {
"type": "string"
},
"sourceContext": {
"type": "object"
}
}
}{
"type": "object",
"required": [
"summary",
"findings"
],
"properties": {
"summary": {
"type": "string"
},
"findings": {
"type": "array"
}
}
}{
"timeout_seconds": 900,
"max_tool_calls": 25,
"max_cost_usd": 5.0
}| capability | transport / credential |
|---|---|
| slack.thread.read | {"transport": "stub"} |
| slack.message.post | {"credential_ref": "SLACK_BOT_TOKEN"} |
The real approval control: which action types require a human before the executor performs them.
| action | policy |
|---|---|
| slack.message.post | required |