Skip to main content
Glama
OrygnsCode

Omnicord - Discord server management MCP for AI agents

Send message

send_message

Send a message to a channel, optionally as a reply, with embeds, or as a Components V2 layout of text, sections, image galleries, separators and link buttons inside colored containers.

Instructions

Send a message to a channel, optionally as a reply, with embeds, or as a Components V2 layout of text, sections, image galleries, separators and link buttons inside colored containers. Components replace content and embeds rather than joining them, and the choice is permanent for that message. For a private message to one person use send_dm; to post under a custom name and avatar use send_webhook_message; to send later use schedule_message. Mentions are suppressed by default; raise the mentions mode only deliberately. Supports dry_run.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
guildNoGuild (server) name or ID. Omit to use the default guild.
embedsNoUp to 10 embeds.
silentNoSend without triggering notifications.
channelYesChannel name or ID.
contentNoMessage text. Required unless components is used.
dry_runNoPreview without sending.
mentionsNoWhich mention types may ping. Default none.
reply_toNoMessage ID to reply to.
componentsNoRich layout, in place of content and embeds. Sending this sets the Components V2 flag, which is permanent for that message: it can never show plain content or embeds afterward, so the two cannot be combined.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.4.0
    • addedInput schema / properties / components
      Added value: +{
      +  "description": "Rich layout, in place of content and embeds. Sending this sets the Components V2 flag, which is permanent for that message: it can never show plain content or embeds afterward, so the two cannot be combined.",
      +  "items": {
      +    "properties": {
      +      "accent_color": {
      +        "description": "For container, hex color of the left edge, like #5865f2.",
      +        "type": "string"
      +      },
      +      "buttons": {
      +        "description": "For buttons, 1-5 link buttons on one row. For section, exactly one. Link buttons only: this server does not answer interactions, so a button that fires one would fail for whoever clicked it.",
      +        "items": {
      +          "properties": {
      +            "disabled": {
      +              "type": "boolean"
      +            },
      +            "label": {
      +              "description": "Button text.",
      +              "maxLength": 80,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "url": {
      +              "description": "Where the button leads.",
      +              "format": "uri",
      +              "maxLength": 512,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "label",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "components": {
      +        "description": "For container, the 1-10 blocks inside it.",
      +        "items": {
      +          "properties": {
      +            "buttons": {
      +              "items": {
      +                "properties": {
      +                  "disabled": {
      +                    "type": "boolean"
      +                  },
      +                  "label": {
      +                    "description": "Button text.",
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "url": {
      +                    "description": "Where the button leads.",
      +                    "format": "uri",
      +                    "maxLength": 512,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "label",
      +                  "url"
      +                ],
      +                "type": "object"
      +              },
      +              "maxItems": 5,
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "divider": {
      +              "type": "boolean"
      +            },
      +            "media": {
      +              "items": {
      +                "properties": {
      +                  "description": {
      +                    "description": "Alt text.",
      +                    "maxLength": 1024,
      +                    "type": "string"
      +                  },
      +                  "spoiler": {
      +                    "description": "Blur until clicked.",
      +                    "type": "boolean"
      +                  },
      +                  "url": {
      +                    "description": "Public image URL.",
      +                    "format": "uri",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "url"
      +                ],
      +                "type": "object"
      +              },
      +              "maxItems": 10,
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "spacing": {
      +              "enum": [
      +                "small",
      +                "large"
      +              ],
      +              "type": "string"
      +            },
      +            "text": {
      +              "maxLength": 4000,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": {
      +              "description": "Same block types as above, except container.",
      +              "enum": [
      +                "text",
      +                "section",
      +                "gallery",
      +                "separator",
      +                "buttons"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 10,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "divider": {
      +        "description": "For separator, draw a horizontal rule. Default true.",
      +        "type": "boolean"
      +      },
      +      "media": {
      +        "description": "For gallery, 1-10 images. For section, exactly one, shown as a thumbnail on the right.",
      +        "items": {
      +          "properties": {
      +            "description": {
      +              "description": "Alt text.",
      +              "maxLength": 1024,
      +              "type": "string"
      +            },
      +            "spoiler": {
      +              "description": "Blur until clicked.",
      +              "type": "boolean"
      +            },
      +            "url": {
      +              "description": "Public image URL.",
      +              "format": "uri",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 10,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "spacing": {
      +        "description": "For separator, how much padding. Default small.",
      +        "enum": [
      +          "small",
      +          "large"
      +        ],
      +        "type": "string"
      +      },
      +      "spoiler": {
      +        "description": "For container, blur the whole group until clicked.",
      +        "type": "boolean"
      +      },
      +      "text": {
      +        "description": "Markdown body. Required for text and section.",
      +        "maxLength": 4000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "type": {
      +        "description": "text: a paragraph of markdown. section: text with a thumbnail or link button beside it. gallery: 1-10 images. separator: vertical space, optionally a rule. buttons: a row of link buttons. container: a bordered group with a colored edge.",
      +        "enum": [
      +          "text",
      +          "section",
      +          "gallery",
      +          "separator",
      +          "buttons",
      +          "container"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 40,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / content / description
      Previous value: -"Message text."New value: +"Message text. Required unless components is used."
    • changedInput schema / required
      Previous value: -[
      -  "channel",
      -  "content"
      -]New value: +[
      +  "channel"
      +]
  2. Changed2 schema fields changedv1.3.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / embeds / items / additionalProperties
      Removed value: -false
  3. First observedv1.0.2

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare this is not read-only and not destructive. The description adds the crucial irreversible constraint that Components V2 replaces content and embeds and that the choice is 'permanent for that message' — a genuinely important behavioral fact not in the annotations. It also discloses the default mention suppression. It stops short of describing permissions or failure modes, but with annotations covering the safety profile, this is strong added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph that front-loads the core action, then modes, then routing alternatives, then the behavioral rule. Every clause carries distinct information; nothing is redundant with the schema or restates the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter mutation tool with a rich nested schema but no output schema, the description covers the critical risks: irreversibility of Components V2, default mention suppression, and alternatives. It does not address permission requirements or a return value, but those are minor relative to the schema's own richness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all nine parameters are already documented in the schema, including the mutual exclusion of content/components and the Components V2 flag. The description reinforces the content-vs-components tradeoff ('Components replace content and embeds rather than joining them') but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (send a message to a channel) and then enumerates the modes: reply, embeds, or Components V2 layout. It explicitly names the sibling tools for adjacent operations (send_dm, send_webhook_message, schedule_message), so an agent can distinguish this tool from its nearest neighbors without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing is given: private message to one person → send_dm, custom name/avatar → send_webhook_message, send later → schedule_message. It also gives a behavioral rule for mentions (suppressed by default, raise only deliberately) and notes dry_run support, covering when and how to use it versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools