Discord (Via message)
Use the message tool. No provider-specific discord tool exposed to the agent.
Musts
- Always:
channel: "discord". - Respect gating:
channels.discord.actions.*(some default off:roles,moderation,presence,channels). - Prefer explicit ids:
guildId,channelId,messageId,userId. - Multi-account: optional
accountId.
Guidelines
- Avoid Markdown tables in outbound Discord messages.
- Mention users as
<@USER_ID>. - Prefer Discord components v2 (
components) for rich UI; use legacyembedsonly when you must.
Targets
- Send-like actions:
to: "channel:<id>"orto: "user:<id>". - Message-specific actions:
channelId: "<id>"(orto) +messageId: "<id>".
Common Actions (Examples)
Send message:
json{ "action": "send", "channel": "discord", "to": "channel:123", "message": "hello", "silent": true }
Send with media:
json{ "action": "send", "channel": "discord", "to": "channel:123", "message": "see attachment", "media": "file:///tmp/example.png" }
- Optional
silent: trueto suppress Discord notifications.
Send with components v2 (recommended for rich UI):
json{ "action": "send", "channel": "discord", "to": "channel:123", "message": "Status update", "components": "[Carbon v2 components]" }
componentsexpects Carbon component instances (Container, TextDisplay, etc.) from JS/TS integrations.- Do not combine
componentswithembeds(Discord rejects v2 + embeds).
Legacy embeds (not recommended):
json{ "action": "send", "channel": "discord", "to": "channel:123", "message": "Status update", "embeds": [{ "title": "Legacy", "description": "Embeds are legacy." }] }
embedsare ignored when components v2 are present.
React:
json{ "action": "react", "channel": "discord", "channelId": "123", "messageId": "456", "emoji": "✅" }
Read:
json{ "action": "read", "channel": "discord", "to": "channel:123", "limit": 20 }
Edit / delete:
json{ "action": "edit", "channel": "discord", "channelId": "123", "messageId": "456", "message": "fixed typo" }
json{ "action": "delete", "channel": "discord", "channelId": "123", "messageId": "456" }
Poll:
json{ "action": "poll", "channel": "discord", "to": "channel:123", "pollQuestion": "Lunch?", "pollOption": ["Pizza", "Sushi", "Salad"], "pollMulti": false, "pollDurationHours": 24 }
Pins:
json{ "action": "pin", "channel": "discord", "channelId": "123", "messageId": "456" }
Threads:
json{ "action": "thread-create", "channel": "discord", "channelId": "123", "messageId": "456", "threadName": "bug triage" }
Search:
json{ "action": "search", "channel": "discord", "guildId": "999", "query": "release notes", "channelIds": ["123", "456"], "limit": 10 }
Presence (often gated):
json{ "action": "set-presence", "channel": "discord", "activityType": "playing", "activityName": "with fire", "status": "online" }
Writing Style (Discord)
- Short, conversational, low ceremony.
- No markdown tables.
- Mention users as
<@USER_ID>.

