Skip to content

bug: Discord message tool requires 'components' on all actions in 2026.3.22 (pin/unpin/react/etc fail schema validation) #52970

@PrinceOfEgypt

Description

@PrinceOfEgypt

Summary

After upgrading to v2026.3.22, the message tool fails schema validation for Discord actions that don't use the components field:

Validation failed for tool "message": components must have required property 'components'

This affects any Discord action call that omits components, including pin, unpin, react, read, etc. — actions where components is irrelevant.

Likely cause

The 2026.3.22 release changed message tool schema discovery from the legacy listActions/getToolSchema adapter methods to the new describeMessageTool(...) API:

Plugins/message discovery: require ChannelMessageActionAdapter.describeMessageTool(...) for shared message tool discovery.

It appears the Discord plugin's describeMessageTool implementation marks components as a required field in the tool schema, when it should be optional (it only applies to send and similar actions, not pin, react, read, etc.).

This is consistent with the Telegram/Mattermost fix that also shipped in 2026.3.22:

Telegram/Mattermost message tool: keep plugin button schemas optional in isolated and cron sessions so plain sends do not fail validation when no current channel is active. (#52589)

The Discord channel appears to have the same problem but was not fixed in this release.

Reproduction

In any agent session with a Discord account configured, call the message tool with any non-send action that doesn't include components:

{
  "action": "pin",
  "accountId": "<your-account>",
  "messageId": "<message-id>",
  "channel": "<channel-id>"
}

Result:

Validation failed for tool "message": components must have required property 'components'

This worked correctly in v2026.3.21 and prior.

Expected behavior

components should be optional in the Discord message tool schema. It is only meaningful for send (and possibly thread-create/thread-reply). All other actions — pin, unpin, react, read, edit, delete, list-pins, etc. — should be callable without it.

Related

Environment

  • OpenClaw: v2026.3.22 (4dcc39c)
  • Channel: Discord
  • Runtime: agent session (researcher agent)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions